Lines Matching refs:lp
623 static int stop_wait_callback (struct lwp_info *lp, void *data);
654 struct lwp_info *lp, *lpnext; in init_lwp_list() local
656 for (lp = lwp_list; lp; lp = lpnext) in init_lwp_list()
658 lpnext = lp->next; in init_lwp_list()
659 xfree (lp); in init_lwp_list()
674 struct lwp_info *lp; in add_lwp() local
678 lp = (struct lwp_info *) xmalloc (sizeof (struct lwp_info)); in add_lwp()
680 memset (lp, 0, sizeof (struct lwp_info)); in add_lwp()
682 lp->waitstatus.kind = TARGET_WAITKIND_IGNORE; in add_lwp()
684 lp->ptid = ptid; in add_lwp()
686 lp->next = lwp_list; in add_lwp()
687 lwp_list = lp; in add_lwp()
691 return lp; in add_lwp()
699 struct lwp_info *lp, *lpprev; in delete_lwp() local
703 for (lp = lwp_list; lp; lpprev = lp, lp = lp->next) in delete_lwp()
704 if (ptid_equal (lp->ptid, ptid)) in delete_lwp()
707 if (!lp) in delete_lwp()
715 lpprev->next = lp->next; in delete_lwp()
717 lwp_list = lp->next; in delete_lwp()
719 xfree (lp); in delete_lwp()
728 struct lwp_info *lp; in find_lwp_pid() local
736 for (lp = lwp_list; lp; lp = lp->next) in find_lwp_pid()
737 if (lwp == GET_LWP (lp->ptid)) in find_lwp_pid()
738 return lp; in find_lwp_pid()
751 struct lwp_info *lp, *lpnext; in iterate_over_lwps() local
753 for (lp = lwp_list; lp; lp = lpnext) in iterate_over_lwps()
755 lpnext = lp->next; in iterate_over_lwps()
756 if ((*callback) (lp, data)) in iterate_over_lwps()
757 return lp; in iterate_over_lwps()
770 struct lwp_info *lp, *found_lp; in lin_lwp_attach_lwp() local
785 found_lp = lp = find_lwp_pid (ptid); in lin_lwp_attach_lwp()
786 if (lp == NULL) in lin_lwp_attach_lwp()
787 lp = add_lwp (ptid); in lin_lwp_attach_lwp()
814 lp->cloned = 1; in lin_lwp_attach_lwp()
822 lp->stopped = 1; in lin_lwp_attach_lwp()
840 lp->stopped = 1; in lin_lwp_attach_lwp()
847 struct lwp_info *lp; in linux_nat_attach() local
856 lp = add_lwp (BUILD_LWP (GET_PID (inferior_ptid), GET_PID (inferior_ptid))); in linux_nat_attach()
868 lp->cloned = 1; in linux_nat_attach()
874 lp->stopped = 1; in linux_nat_attach()
877 lp->status = W_STOPCODE (SIGSTOP); in linux_nat_attach()
878 lp->resumed = 1; in linux_nat_attach()
887 detach_callback (struct lwp_info *lp, void *data) in detach_callback() argument
889 gdb_assert (lp->status == 0 || WIFSTOPPED (lp->status)); in detach_callback()
891 if (debug_linux_nat && lp->status) in detach_callback()
893 strsignal (WSTOPSIG (lp->status)), in detach_callback()
894 target_pid_to_str (lp->ptid)); in detach_callback()
896 while (lp->signalled && lp->stopped) in detach_callback()
899 if (ptrace (PTRACE_CONT, GET_LWP (lp->ptid), 0, in detach_callback()
900 WSTOPSIG (lp->status)) < 0) in detach_callback()
901 error ("Can't continue %s: %s", target_pid_to_str (lp->ptid), in detach_callback()
907 target_pid_to_str (lp->ptid), in detach_callback()
908 status_to_str (lp->status)); in detach_callback()
910 lp->stopped = 0; in detach_callback()
911 lp->signalled = 0; in detach_callback()
912 lp->status = 0; in detach_callback()
920 gdb_assert (lp->status == 0 || WIFSTOPPED (lp->status)); in detach_callback()
925 if (GET_LWP (lp->ptid) != GET_PID (lp->ptid)) in detach_callback()
928 if (ptrace (PTRACE_DETACH, GET_LWP (lp->ptid), 0, in detach_callback()
929 WSTOPSIG (lp->status)) < 0) in detach_callback()
930 error ("Can't detach %s: %s", target_pid_to_str (lp->ptid), in detach_callback()
936 target_pid_to_str (lp->ptid), in detach_callback()
937 strsignal (WSTOPSIG (lp->status))); in detach_callback()
939 delete_lwp (lp->ptid); in detach_callback()
969 resume_callback (struct lwp_info *lp, void *data) in resume_callback() argument
971 if (lp->stopped && lp->status == 0) in resume_callback()
975 child_resume (pid_to_ptid (GET_LWP (lp->ptid)), 0, TARGET_SIGNAL_0); in resume_callback()
979 target_pid_to_str (lp->ptid)); in resume_callback()
980 lp->stopped = 0; in resume_callback()
981 lp->step = 0; in resume_callback()
988 resume_clear_callback (struct lwp_info *lp, void *data) in resume_clear_callback() argument
990 lp->resumed = 0; in resume_clear_callback()
995 resume_set_callback (struct lwp_info *lp, void *data) in resume_set_callback() argument
997 lp->resumed = 1; in resume_set_callback()
1004 struct lwp_info *lp; in linux_nat_resume() local
1020 lp = find_lwp_pid (ptid); in linux_nat_resume()
1021 if (lp) in linux_nat_resume()
1023 ptid = pid_to_ptid (GET_LWP (lp->ptid)); in linux_nat_resume()
1026 lp->step = step; in linux_nat_resume()
1029 lp->resumed = 1; in linux_nat_resume()
1033 if (lp->status) in linux_nat_resume()
1043 lp->stopped = 0; in linux_nat_resume()
1091 linux_nat_handle_extended (struct lwp_info *lp, int status) in linux_nat_handle_extended() argument
1093 linux_handle_extended_wait (GET_LWP (lp->ptid), status, in linux_nat_handle_extended()
1094 &lp->waitstatus); in linux_nat_handle_extended()
1097 if (lp->waitstatus.kind == TARGET_WAITKIND_SPURIOUS) in linux_nat_handle_extended()
1100 new_lp = add_lwp (BUILD_LWP (lp->waitstatus.value.related_pid, in linux_nat_handle_extended()
1105 lp->waitstatus.kind = TARGET_WAITKIND_IGNORE; in linux_nat_handle_extended()
1110 GET_LWP (lp->ptid)); in linux_nat_handle_extended()
1111 ptrace (PTRACE_CONT, GET_LWP (lp->ptid), 0, 0); in linux_nat_handle_extended()
1123 wait_lwp (struct lwp_info *lp) in wait_lwp() argument
1129 gdb_assert (!lp->stopped); in wait_lwp()
1130 gdb_assert (lp->status == 0); in wait_lwp()
1132 pid = waitpid (GET_LWP (lp->ptid), &status, 0); in wait_lwp()
1135 pid = waitpid (GET_LWP (lp->ptid), &status, __WCLONE); in wait_lwp()
1146 target_pid_to_str (lp->ptid)); in wait_lwp()
1152 gdb_assert (pid == GET_LWP (lp->ptid)); in wait_lwp()
1158 target_pid_to_str (lp->ptid), in wait_lwp()
1169 target_pid_to_str (lp->ptid)); in wait_lwp()
1174 if (in_thread_list (lp->ptid)) in wait_lwp()
1177 if (!ptid_equal (lp->ptid, inferior_ptid)) in wait_lwp()
1178 delete_thread (lp->ptid); in wait_lwp()
1180 target_pid_to_str (lp->ptid)); in wait_lwp()
1183 delete_lwp (lp->ptid); in wait_lwp()
1196 if (linux_nat_handle_extended (lp, status)) in wait_lwp()
1197 return wait_lwp (lp); in wait_lwp()
1206 stop_callback (struct lwp_info *lp, void *data) in stop_callback() argument
1208 if (!lp->stopped && !lp->signalled) in stop_callback()
1216 target_pid_to_str (lp->ptid)); in stop_callback()
1219 ret = kill_lwp (GET_LWP (lp->ptid), SIGSTOP); in stop_callback()
1228 lp->signalled = 1; in stop_callback()
1229 gdb_assert (lp->status == 0); in stop_callback()
1239 stop_wait_callback (struct lwp_info *lp, void *data) in stop_wait_callback() argument
1243 if (!lp->stopped) in stop_wait_callback()
1247 status = wait_lwp (lp); in stop_wait_callback()
1254 if (!lp->signalled) in stop_wait_callback()
1256 lp->stopped = 1; in stop_wait_callback()
1261 ptrace (PTRACE_CONT, GET_LWP (lp->ptid), 0, 0); in stop_wait_callback()
1265 target_pid_to_str (lp->ptid), in stop_wait_callback()
1268 return stop_wait_callback (lp, flush_mask); in stop_wait_callback()
1290 ptrace (PTRACE_CONT, GET_LWP (lp->ptid), 0, 0); in stop_wait_callback()
1295 target_pid_to_str (lp->ptid), in stop_wait_callback()
1300 target_pid_to_str (lp->ptid)); in stop_wait_callback()
1303 stop_wait_callback (lp, data); in stop_wait_callback()
1305 if (lp->status) in stop_wait_callback()
1311 target_pid_to_str (lp->ptid), in stop_wait_callback()
1314 kill_lwp (GET_LWP (lp->ptid), WSTOPSIG (lp->status)); in stop_wait_callback()
1317 lp->status = status; in stop_wait_callback()
1330 target_pid_to_str (lp->ptid)); in stop_wait_callback()
1334 ptrace (PTRACE_CONT, GET_LWP (lp->ptid), 0, 0); in stop_wait_callback()
1338 target_pid_to_str (lp->ptid), in stop_wait_callback()
1343 stop_wait_callback (lp, data); in stop_wait_callback()
1347 if (lp->status == 0) in stop_wait_callback()
1348 lp->status = status; in stop_wait_callback()
1355 target_pid_to_str (lp->ptid), in stop_wait_callback()
1358 kill_lwp (GET_LWP (lp->ptid), WSTOPSIG (status)); in stop_wait_callback()
1367 lp->stopped = 1; in stop_wait_callback()
1368 lp->signalled = 0; in stop_wait_callback()
1408 flush_callback (struct lwp_info *lp, void *data) in flush_callback() argument
1417 if (lwp_list == lp && lp->next == NULL) in flush_callback()
1418 if (!linux_nat_thread_alive (lp->ptid)) in flush_callback()
1428 if (lp->status) in flush_callback()
1431 printf_unfiltered ("FC: LP has pending status %06x\n", lp->status); in flush_callback()
1432 if (WIFSTOPPED (lp->status) && sigismember (flush_mask, WSTOPSIG (lp->status))) in flush_callback()
1433 lp->status = 0; in flush_callback()
1436 while (linux_nat_has_pending (GET_LWP (lp->ptid), &pending, flush_mask)) in flush_callback()
1441 ret = ptrace (PTRACE_CONT, GET_LWP (lp->ptid), 0, 0); in flush_callback()
1446 lp->stopped = 0; in flush_callback()
1447 stop_wait_callback (lp, flush_mask); in flush_callback()
1451 lp->status); in flush_callback()
1460 status_callback (struct lwp_info *lp, void *data) in status_callback() argument
1464 return (lp->status != 0 && lp->resumed); in status_callback()
1470 running_callback (struct lwp_info *lp, void *data) in running_callback() argument
1472 return (lp->stopped == 0 || (lp->status != 0 && lp->resumed)); in running_callback()
1478 count_events_callback (struct lwp_info *lp, void *data) in count_events_callback() argument
1485 if (lp->status != 0 in count_events_callback()
1486 && WIFSTOPPED (lp->status) && WSTOPSIG (lp->status) == SIGTRAP) in count_events_callback()
1495 select_singlestep_lwp_callback (struct lwp_info *lp, void *data) in select_singlestep_lwp_callback() argument
1497 if (lp->step && lp->status != 0) in select_singlestep_lwp_callback()
1506 select_event_lwp_callback (struct lwp_info *lp, void *data) in select_event_lwp_callback() argument
1513 if (lp->status != 0 in select_event_lwp_callback()
1514 && WIFSTOPPED (lp->status) && WSTOPSIG (lp->status) == SIGTRAP) in select_event_lwp_callback()
1522 cancel_breakpoints_callback (struct lwp_info *lp, void *data) in cancel_breakpoints_callback() argument
1527 if (lp == event_lp) in cancel_breakpoints_callback()
1541 if (lp->status != 0 in cancel_breakpoints_callback()
1542 && WIFSTOPPED (lp->status) && WSTOPSIG (lp->status) == SIGTRAP in cancel_breakpoints_callback()
1543 && breakpoint_inserted_here_p (read_pc_pid (lp->ptid) - in cancel_breakpoints_callback()
1549 target_pid_to_str (lp->ptid)); in cancel_breakpoints_callback()
1553 write_pc_pid (read_pc_pid (lp->ptid) - DECR_PC_AFTER_BREAK, lp->ptid); in cancel_breakpoints_callback()
1556 lp->status = 0; in cancel_breakpoints_callback()
1618 resumed_callback (struct lwp_info *lp, void *data) in resumed_callback() argument
1620 return lp->resumed; in resumed_callback()
1734 stop_and_resume_callback (struct lwp_info *lp, void *data) in stop_and_resume_callback() argument
1738 if (!lp->stopped && !lp->signalled) in stop_and_resume_callback()
1740 stop_callback (lp, NULL); in stop_and_resume_callback()
1741 stop_wait_callback (lp, NULL); in stop_and_resume_callback()
1744 if (lp == ptr) in stop_and_resume_callback()
1746 resume_callback (lp, NULL); in stop_and_resume_callback()
1747 resume_set_callback (lp, NULL); in stop_and_resume_callback()
1756 struct lwp_info *lp = NULL; in linux_nat_wait() local
1781 lp = iterate_over_lwps (status_callback, NULL); in linux_nat_wait()
1782 if (lp) in linux_nat_wait()
1784 status = lp->status; in linux_nat_wait()
1785 lp->status = 0; in linux_nat_wait()
1791 target_pid_to_str (lp->ptid)); in linux_nat_wait()
1807 lp = find_lwp_pid (ptid); in linux_nat_wait()
1808 gdb_assert (lp); in linux_nat_wait()
1809 status = lp->status; in linux_nat_wait()
1810 lp->status = 0; in linux_nat_wait()
1816 target_pid_to_str (lp->ptid)); in linux_nat_wait()
1821 options = lp->cloned ? __WCLONE : 0; in linux_nat_wait()
1825 if (status && lp->signalled) in linux_nat_wait()
1839 child_resume (pid_to_ptid (GET_LWP (lp->ptid)), lp->step, in linux_nat_wait()
1844 lp->step ? "PTRACE_SINGLESTEP" : "PTRACE_CONT", in linux_nat_wait()
1845 target_pid_to_str (lp->ptid)); in linux_nat_wait()
1846 lp->stopped = 0; in linux_nat_wait()
1847 gdb_assert (lp->resumed); in linux_nat_wait()
1850 stop_wait_callback (lp, NULL); in linux_nat_wait()
1873 lp = find_lwp_pid (pid_to_ptid (lwpid)); in linux_nat_wait()
1884 if (WIFSTOPPED (status) && !lp) in linux_nat_wait()
1895 if (!WIFSTOPPED (status) && !lp) in linux_nat_wait()
1908 if (!lp) in linux_nat_wait()
1910 lp = add_lwp (BUILD_LWP (lwpid, GET_PID (inferior_ptid))); in linux_nat_wait()
1912 lp->cloned = 1; in linux_nat_wait()
1918 lp->signalled = 1; in linux_nat_wait()
1927 add_thread (lp->ptid); in linux_nat_wait()
1929 target_pid_to_str (lp->ptid)); in linux_nat_wait()
1940 if (linux_nat_handle_extended (lp, status)) in linux_nat_wait()
1950 if (in_thread_list (lp->ptid)) in linux_nat_wait()
1954 if (!ptid_equal (lp->ptid, inferior_ptid)) in linux_nat_wait()
1955 delete_thread (lp->ptid); in linux_nat_wait()
1957 target_pid_to_str (lp->ptid)); in linux_nat_wait()
1970 if (GET_PID (lp->ptid) == GET_LWP (lp->ptid)) in linux_nat_wait()
1972 lp->stopped = 1; in linux_nat_wait()
1979 target_pid_to_str (lp->ptid)); in linux_nat_wait()
1981 delete_lwp (lp->ptid); in linux_nat_wait()
2001 if (num_lwps > 1 && !linux_nat_thread_alive (lp->ptid)) in linux_nat_wait()
2003 if (in_thread_list (lp->ptid)) in linux_nat_wait()
2007 if (!ptid_equal (lp->ptid, inferior_ptid)) in linux_nat_wait()
2008 delete_thread (lp->ptid); in linux_nat_wait()
2010 target_pid_to_str (lp->ptid)); in linux_nat_wait()
2015 target_pid_to_str (lp->ptid)); in linux_nat_wait()
2017 delete_lwp (lp->ptid); in linux_nat_wait()
2029 if (lp->signalled in linux_nat_wait()
2035 target_pid_to_str (lp->ptid)); in linux_nat_wait()
2038 lp->signalled = 0; in linux_nat_wait()
2041 child_resume (pid_to_ptid (GET_LWP (lp->ptid)), lp->step, in linux_nat_wait()
2046 lp->step ? in linux_nat_wait()
2048 target_pid_to_str (lp->ptid)); in linux_nat_wait()
2050 lp->stopped = 0; in linux_nat_wait()
2051 gdb_assert (lp->resumed); in linux_nat_wait()
2078 gdb_assert (lp); in linux_nat_wait()
2101 child_resume (pid_to_ptid (GET_LWP (lp->ptid)), lp->step, signo); in linux_nat_wait()
2105 lp->step ? in linux_nat_wait()
2107 target_pid_to_str (lp->ptid), in linux_nat_wait()
2109 lp->stopped = 0; in linux_nat_wait()
2125 lp->stopped = 1; in linux_nat_wait()
2129 status_to_str (status), target_pid_to_str (lp->ptid)); in linux_nat_wait()
2143 select_event_lwp (&lp, &status); in linux_nat_wait()
2148 iterate_over_lwps (cancel_breakpoints_callback, lp); in linux_nat_wait()
2155 trap_ptid = (threaded ? lp->ptid : pid_to_ptid (GET_LWP (lp->ptid))); in linux_nat_wait()
2164 if (lp->waitstatus.kind != TARGET_WAITKIND_IGNORE) in linux_nat_wait()
2166 *ourstatus = lp->waitstatus; in linux_nat_wait()
2167 lp->waitstatus.kind = TARGET_WAITKIND_IGNORE; in linux_nat_wait()
2172 return (threaded ? lp->ptid : pid_to_ptid (GET_LWP (lp->ptid))); in linux_nat_wait()
2176 kill_callback (struct lwp_info *lp, void *data) in kill_callback() argument
2179 ptrace (PTRACE_KILL, GET_LWP (lp->ptid), 0, 0); in kill_callback()
2183 target_pid_to_str (lp->ptid), in kill_callback()
2190 kill_wait_callback (struct lwp_info *lp, void *data) in kill_wait_callback() argument
2201 if (lp->cloned) in kill_wait_callback()
2205 pid = waitpid (GET_LWP (lp->ptid), NULL, __WCLONE); in kill_wait_callback()
2210 target_pid_to_str (lp->ptid)); in kill_wait_callback()
2213 while (pid == GET_LWP (lp->ptid)); in kill_wait_callback()
2220 pid = waitpid (GET_LWP (lp->ptid), NULL, 0); in kill_wait_callback()
2225 target_pid_to_str (lp->ptid)); in kill_wait_callback()
2228 while (pid == GET_LWP (lp->ptid)); in kill_wait_callback()