aboutsummaryrefslogtreecommitdiff
path: root/gdb/linux-nat.c
diff options
context:
space:
mode:
authorGary Benson <gbenson@redhat.com>2015-03-24 14:05:43 +0000
committerGary Benson <gbenson@redhat.com>2015-03-24 14:05:43 +0000
commit6d4ee8c6ad7d5b04e524b2b48ffe5639028594a5 (patch)
tree796ae04a4d944777a1aa9bcde44ec114b58f11af /gdb/linux-nat.c
parent70a0bb6b590bcfe304fe082d421feb52e0a0d4dc (diff)
downloadgdb-6d4ee8c6ad7d5b04e524b2b48ffe5639028594a5.zip
gdb-6d4ee8c6ad7d5b04e524b2b48ffe5639028594a5.tar.gz
gdb-6d4ee8c6ad7d5b04e524b2b48ffe5639028594a5.tar.bz2
Add iterate_over_lwps to gdbserver
This commit introduces a new function, iterate_over_lwps, that shared Linux code can use to call a function for each LWP that matches certain criteria. This function already existed in GDB and was in use by GDB's various low-level Linux x86 debug register setters. An equivalent was written for gdbserver and gdbserver's low-level Linux x86 debug register setters were modified to use it. gdb/ChangeLog: * linux-nat.h: Include nat/linux-nat.h. (iterate_over_lwps): Move declaration to nat/linux-nat.h. * nat/linux-nat.h (struct lwp_info): New forward declaration. (iterate_over_lwps_ftype): New typedef. (iterate_over_lwps): New declaration. * linux-nat.h (iterate_over_lwps): Update comment. Use iterate_over_lwps_ftype. Update callback return value check. gdb/gdbserver/ChangeLog: * linux-low.h: Include nat/linux-nat.h. * linux-low.c (iterate_over_lwps_args): New structure. (iterate_over_lwps_filter): New function. (iterate_over_lwps): Likewise. * linux-x86-low.c (update_debug_registers_callback): Update signature to what iterate_over_lwps expects. Remove PID check that iterate_over_lwps now performs. (x86_dr_low_set_addr): Use iterate_over_lwps. (x86_dr_low_set_control): Likewise.
Diffstat (limited to 'gdb/linux-nat.c')
-rw-r--r--gdb/linux-nat.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
index 8eb73d9..5a2cba5 100644
--- a/gdb/linux-nat.c
+++ b/gdb/linux-nat.c
@@ -834,14 +834,11 @@ find_lwp_pid (ptid_t ptid)
return NULL;
}
-/* Call CALLBACK with its second argument set to DATA for every LWP in
- the list. If CALLBACK returns 1 for a particular LWP, return a
- pointer to the structure describing that LWP immediately.
- Otherwise return NULL. */
+/* See nat/linux-nat.h. */
struct lwp_info *
iterate_over_lwps (ptid_t filter,
- int (*callback) (struct lwp_info *, void *),
+ iterate_over_lwps_ftype callback,
void *data)
{
struct lwp_info *lp, *lpnext;
@@ -852,7 +849,7 @@ iterate_over_lwps (ptid_t filter,
if (ptid_match (lp->ptid, filter))
{
- if ((*callback) (lp, data))
+ if ((*callback) (lp, data) != 0)
return lp;
}
}