diff options
author | Mark Kettenis <kettenis@gnu.org> | 2001-07-07 10:58:37 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@gnu.org> | 2001-07-07 10:58:37 +0000 |
commit | 58eeadbab5dd386e76fca8f0aabeae56d0e363d5 (patch) | |
tree | 5521cb1f4205cf087a23546ec443d9ee8186759f /gdb/lin-lwp.c | |
parent | 7f1659e652a642364c32cb968303b6807ab8494d (diff) | |
download | gdb-58eeadbab5dd386e76fca8f0aabeae56d0e363d5.zip gdb-58eeadbab5dd386e76fca8f0aabeae56d0e363d5.tar.gz gdb-58eeadbab5dd386e76fca8f0aabeae56d0e363d5.tar.bz2 |
* lin-lwp.c (status_to_str): New function.
(lin_lwp_wait): Use it to print debug messages where appropriate.
Diffstat (limited to 'gdb/lin-lwp.c')
-rw-r--r-- | gdb/lin-lwp.c | 41 |
1 files changed, 28 insertions, 13 deletions
diff --git a/gdb/lin-lwp.c b/gdb/lin-lwp.c index 89752dd..66fedc5 100644 --- a/gdb/lin-lwp.c +++ b/gdb/lin-lwp.c @@ -153,7 +153,27 @@ static sigset_t blocked_mask; /* Prototypes for local functions. */ static int stop_wait_callback (struct lwp_info *lp, void *data); +/* Convert wait status STATUS to a string. Used for printing debug + messages only. */ +static char * +status_to_str (int status) +{ + static char buf[64]; + + if (WIFSTOPPED (status)) + snprintf (buf, sizeof (buf), "%s (stopped)", + strsignal (WSTOPSIG (status))); + else if (WIFSIGNALED (status)) + snprintf (buf, sizeof (buf), "%s (terminated)", + strsignal (WSTOPSIG (status))); + else + snprintf (buf, sizeof (buf), "%d (exited)", + WEXITSTATUS (status)); + + return buf; +} + /* Initialize the list of LWPs. Note that this module, contrary to what GDB's generic threads layer does for its thread list, re-initializes the LWP lists whenever we mourn or detach (which @@ -901,11 +921,9 @@ lin_lwp_wait (ptid_t ptid, struct target_waitstatus *ourstatus) lp->status = 0; if (debug_lin_lwp && status) - fprintf_unfiltered (gdb_stdlog, - "Using pending wait status %d for LWP %ld.\n", - WIFSTOPPED (status) ? WSTOPSIG (status) : - WIFSIGNALED (status) ? WTERMSIG (status) : - WEXITSTATUS (status), GET_LWP (lp->ptid)); + fprintf_unfiltered (gdb_stdlog, + "Using pending wait status %s for LWP %ld.\n", + status_to_str (status), GET_LWP (lp->ptid)); } /* But if we don't fine one, we'll have to wait, and check both @@ -927,11 +945,9 @@ lin_lwp_wait (ptid_t ptid, struct target_waitstatus *ourstatus) lp->status = 0; if (debug_lin_lwp && status) - fprintf_unfiltered (gdb_stdlog, - "Using pending wait status %d for LWP %ld.\n", - WIFSTOPPED (status) ? WSTOPSIG (status) : - WIFSIGNALED (status) ? WTERMSIG (status) : - WEXITSTATUS (status), GET_LWP (lp->ptid)); + fprintf_unfiltered (gdb_stdlog, + "Using pending wait status %s for LWP %ld.\n", + status_to_str (status), GET_LWP (lp->ptid)); /* If we have to wait, take into account whether PID is a cloned process or not. And we have to convert it to something that @@ -1103,9 +1119,8 @@ lin_lwp_wait (ptid_t ptid, struct target_waitstatus *ourstatus) lp->stopped = 1; if (debug_lin_lwp) - fprintf_unfiltered (gdb_stdlog, - "LLW: Candidate event %d in %ld\n", - WSTOPSIG (status), GET_LWP (lp->ptid)); + fprintf_unfiltered (gdb_stdlog, "Candidate event %s in LWP %ld.\n", + status_to_str (status), GET_LWP (lp->ptid)); /* Now stop all other LWP's ... */ iterate_over_lwps (stop_callback, NULL); |