forked from Imagelibrary/binutils-gdb
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.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user