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, |