| Index: src/nonsfi/linux/linux_pthread_private.c
|
| diff --git a/src/nonsfi/linux/linux_pthread_private.c b/src/nonsfi/linux/linux_pthread_private.c
|
| index 0cf3cd03d0c10076cf393720abfdd0bdbf0ab83b..9158be7178c31b3d82e6176ba8acf29465d9f44d 100644
|
| --- a/src/nonsfi/linux/linux_pthread_private.c
|
| +++ b/src/nonsfi/linux/linux_pthread_private.c
|
| @@ -24,14 +24,16 @@ static uint32_t irt_return_call(uintptr_t result) {
|
| }
|
|
|
| static int nacl_irt_thread_create(void (*start_func)(void), void *stack,
|
| - void *thread_ptr) {
|
| + void *thread_ptr,
|
| + nacl_irt_tid_t *child_tid) {
|
| /*
|
| * We do not use CLONE_CHILD_CLEARTID as we do not want any
|
| * non-private futex signaling. Also, NaCl ABI does not require us
|
| * to signal the futex on stack_flag.
|
| */
|
| int flags = (CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND |
|
| - CLONE_THREAD | CLONE_SYSVSEM | CLONE_SETTLS);
|
| + CLONE_THREAD | CLONE_SYSVSEM | CLONE_SETTLS |
|
| + CLONE_PARENT_SETTID);
|
| /*
|
| * linux_clone_wrapper expects start_func's type is "int (*)(void *)".
|
| * Although |start_func| has type "void (*)(void)", the type mismatching
|
| @@ -40,7 +42,7 @@ static int nacl_irt_thread_create(void (*start_func)(void), void *stack,
|
| */
|
| return irt_return_call(linux_clone_wrapper(
|
| (uintptr_t) start_func, /* arg */ 0, flags, stack,
|
| - /* ptid */ NULL, thread_ptr, /* ctid */ NULL));
|
| + child_tid, thread_ptr, /* ctid */ NULL));
|
| }
|
|
|
| static void nacl_irt_thread_exit(int32_t *stack_flag) {
|
| @@ -80,7 +82,7 @@ static int nacl_irt_thread_nice(const int nice) {
|
| }
|
|
|
| void __nc_initialize_interfaces(void) {
|
| - const struct nacl_irt_thread init = {
|
| + const struct nacl_irt_thread_v0_2 init = {
|
| nacl_irt_thread_create,
|
| nacl_irt_thread_exit,
|
| nacl_irt_thread_nice,
|
|
|