diff options
author | Pedro Alves <palves@redhat.com> | 2007-05-10 21:05:15 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2007-05-10 21:05:15 +0000 |
commit | 444d61395b63ff0474e8d150497ac709cf6702f6 (patch) | |
tree | 5cd2142151c86c22047df4e3095d3ba89bd96503 /gdb/gdbserver/spu-low.c | |
parent | 1d5315fee9335ecba7d345e41e451caa1d604114 (diff) | |
download | gdb-444d61395b63ff0474e8d150497ac709cf6702f6.zip gdb-444d61395b63ff0474e8d150497ac709cf6702f6.tar.gz gdb-444d61395b63ff0474e8d150497ac709cf6702f6.tar.bz2 |
* target.h (target_ops): Change return type of detach to int.
Add join.
(join_inferior): New.
* server.c (main): Don't skip detach support on mingw32.
If the inferior doesn't support detaching return error.
Call join_inferior instead of using waitpid.
* linux-low.c (linux_join): New.
(linux_target_op): Add linux_join.
* spu-low.c (spu_join): New.
(spu_target_ops): Add spu_join.
* win32-low.c (win32_detach): Adapt to new interface.
Reopen current_process_handle before detaching. Issue a child
resume before detaching.
(win32_join): New.
(win32_target_op): Add win32_join.
Diffstat (limited to 'gdb/gdbserver/spu-low.c')
-rw-r--r-- | gdb/gdbserver/spu-low.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/gdb/gdbserver/spu-low.c b/gdb/gdbserver/spu-low.c index 0d1c81a..5dbc811 100644 --- a/gdb/gdbserver/spu-low.c +++ b/gdb/gdbserver/spu-low.c @@ -320,6 +320,18 @@ spu_detach (void) ptrace (PTRACE_DETACH, current_tid, 0, 0); } +static void +spu_join (void) +{ + int status, ret; + + do { + ret = waitpid (current_tid, &status, 0); + if (WIFEXITED (status) || WIFSIGNALED (status)) + break; + } while (ret != -1 || errno != ECHILD); +} + /* Return nonzero if the given thread is still alive. */ static int spu_thread_alive (unsigned long tid) @@ -567,6 +579,7 @@ static struct target_ops spu_target_ops = { spu_attach, spu_kill, spu_detach, + spu_join, spu_thread_alive, spu_resume, spu_wait, |