Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(276)

Side by Side Diff: src/untrusted/pthread/nc_init_private.c

Issue 1212613002: Non-SFI mode: Add Linux asynchronous signal support (Closed) Base URL: https://chromium.googlesource.com/native_client/src/native_client.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The Native Client Authors. All rights reserved. 2 * Copyright (c) 2012 The Native Client Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be 3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file. 4 * found in the LICENSE file.
5 */ 5 */
6 6
7 #include "native_client/src/untrusted/irt/irt_interfaces.h" 7 #include "native_client/src/untrusted/irt/irt_interfaces.h"
8 #include "native_client/src/untrusted/nacl/nacl_irt.h" 8 #include "native_client/src/untrusted/nacl/nacl_irt.h"
9 #include "native_client/src/untrusted/nacl/syscall_bindings_trampoline.h" 9 #include "native_client/src/untrusted/nacl/syscall_bindings_trampoline.h"
10 #include "native_client/src/untrusted/pthread/pthread_internal.h" 10 #include "native_client/src/untrusted/pthread/pthread_internal.h"
11 11
12 static int nacl_irt_thread_create(void (*start_func)(void), void *stack, 12 static int nacl_irt_thread_create(void (*start_func)(void), void *stack,
13 void *thread_ptr) { 13 void *thread_ptr, nacl_irt_tid_t *tid) {
14 #if defined(NACL_IN_IRT) 14 #if defined(NACL_IN_IRT)
15 /* 15 /*
16 * We want the first TLS to point to an unmapped location. The 16 * We want the first TLS to point to an unmapped location. The
17 * thread_create() syscall rejects a zero argument for the first 17 * thread_create() syscall rejects a zero argument for the first
18 * TLS, so use a non-zero value in the unmapped first 64k page. 18 * TLS, so use a non-zero value in the unmapped first 64k page.
19 */ 19 */
20 void *user_tls = (void *) 0x1000; 20 void *user_tls = (void *) 0x1000;
21 return -NACL_SYSCALL(thread_create)((void *) start_func, stack, 21 return -NACL_SYSCALL(thread_create)((void *) start_func, stack,
22 user_tls, thread_ptr); 22 user_tls, thread_ptr);
23 #else 23 #else
24 return -NACL_SYSCALL(thread_create)((void *) start_func, stack, 24 return -NACL_SYSCALL(thread_create)((void *) start_func, stack,
25 thread_ptr, 0); 25 thread_ptr, 0);
26 #endif 26 #endif
27 } 27 }
28 28
29 static void nacl_irt_thread_exit(int32_t *stack_flag) { 29 static void nacl_irt_thread_exit(int32_t *stack_flag) {
30 NACL_SYSCALL(thread_exit)(stack_flag); 30 NACL_SYSCALL(thread_exit)(stack_flag);
31 __builtin_trap(); 31 __builtin_trap();
32 } 32 }
33 33
34 static int nacl_irt_thread_nice(const int nice) { 34 static int nacl_irt_thread_nice(const int nice) {
35 return -NACL_SYSCALL(thread_nice)(nice); 35 return -NACL_SYSCALL(thread_nice)(nice);
36 } 36 }
37 37
38 void __nc_initialize_interfaces(void) { 38 void __nc_initialize_interfaces(void) {
39 const struct nacl_irt_thread init = { 39 const struct nacl_irt_thread_v0_2 init = {
40 nacl_irt_thread_create, 40 nacl_irt_thread_create,
41 nacl_irt_thread_exit, 41 nacl_irt_thread_exit,
42 nacl_irt_thread_nice, 42 nacl_irt_thread_nice,
43 }; 43 };
44 __libnacl_irt_thread = init; 44 __libnacl_irt_thread = init;
45 } 45 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698