server: Split get_thread_from_pid to allow lookups by tid or pid only.
This commit is contained in:
parent
f231a70f4c
commit
48b74b3237
|
@ -144,7 +144,12 @@ void sigchld_callback(void)
|
|||
for (;;)
|
||||
{
|
||||
if (!(pid = wait4_wrapper( -1, &status, WUNTRACED | WNOHANG, NULL ))) break;
|
||||
if (pid != -1) handle_child_status( get_thread_from_pid(pid), pid, status, -1 );
|
||||
if (pid != -1)
|
||||
{
|
||||
struct thread *thread = get_thread_from_tid( pid );
|
||||
if (!thread) thread = get_thread_from_pid( pid );
|
||||
handle_child_status( thread, pid, status, -1 );
|
||||
}
|
||||
else break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -297,15 +297,23 @@ struct thread *get_thread_from_handle( obj_handle_t handle, unsigned int access
|
|||
access, &thread_ops );
|
||||
}
|
||||
|
||||
/* find a thread from a Unix pid */
|
||||
struct thread *get_thread_from_pid( int pid )
|
||||
/* find a thread from a Unix tid */
|
||||
struct thread *get_thread_from_tid( int tid )
|
||||
{
|
||||
struct thread *thread;
|
||||
|
||||
LIST_FOR_EACH_ENTRY( thread, &thread_list, struct thread, entry )
|
||||
{
|
||||
if (thread->unix_tid == pid) return thread;
|
||||
if (thread->unix_tid == tid) return thread;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* find a thread from a Unix pid */
|
||||
struct thread *get_thread_from_pid( int pid )
|
||||
{
|
||||
struct thread *thread;
|
||||
|
||||
LIST_FOR_EACH_ENTRY( thread, &thread_list, struct thread, entry )
|
||||
{
|
||||
if (thread->unix_pid == pid) return thread;
|
||||
|
|
|
@ -103,6 +103,7 @@ extern struct thread *current;
|
|||
extern struct thread *create_thread( int fd, struct process *process );
|
||||
extern struct thread *get_thread_from_id( thread_id_t id );
|
||||
extern struct thread *get_thread_from_handle( obj_handle_t handle, unsigned int access );
|
||||
extern struct thread *get_thread_from_tid( int tid );
|
||||
extern struct thread *get_thread_from_pid( int pid );
|
||||
extern void stop_thread( struct thread *thread );
|
||||
extern int wake_thread( struct thread *thread );
|
||||
|
|
Loading…
Reference in New Issue