mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-13 14:50:17 +00:00
(pthread_handle_create): Store ID of new thread before clone call.
This commit is contained in:
parent
90db0d747a
commit
107d073a3f
@ -412,6 +412,10 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
|
|||||||
new_thread->p_start_args.start_routine = start_routine;
|
new_thread->p_start_args.start_routine = start_routine;
|
||||||
new_thread->p_start_args.arg = arg;
|
new_thread->p_start_args.arg = arg;
|
||||||
new_thread->p_start_args.mask = *mask;
|
new_thread->p_start_args.mask = *mask;
|
||||||
|
/* Make the new thread ID available already now. If any of the later
|
||||||
|
functions fail we return an error value and the caller must not use
|
||||||
|
the stored thread ID. */
|
||||||
|
*thread = new_thread_id;
|
||||||
/* Raise priority of thread manager if needed */
|
/* Raise priority of thread manager if needed */
|
||||||
__pthread_manager_adjust_prio(new_thread->p_priority);
|
__pthread_manager_adjust_prio(new_thread->p_priority);
|
||||||
/* Do the cloning. We have to use two different functions depending
|
/* Do the cloning. We have to use two different functions depending
|
||||||
@ -484,8 +488,6 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
|
|||||||
/* Set pid field of the new thread, in case we get there before the
|
/* Set pid field of the new thread, in case we get there before the
|
||||||
child starts. */
|
child starts. */
|
||||||
new_thread->p_pid = pid;
|
new_thread->p_pid = pid;
|
||||||
/* We're all set */
|
|
||||||
*thread = new_thread_id;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user