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

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

Issue 1222753005: Non-SFI mode: Use clone() instead of pthread_create() (Closed) Base URL: https://chromium.googlesource.com/native_client/src/native_client.git@master
Patch Set: Addressed feedback 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
« no previous file with comments | « src/nonsfi/linux/linux_pthread_private.c ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 /* 7 /*
8 * Native Client threads library 8 * Native Client threads library
9 */ 9 */
10 10
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 ANNOTATE_NOT_HAPPENS_BEFORE_MUTEX(&__nc_thread_management_lock); 265 ANNOTATE_NOT_HAPPENS_BEFORE_MUTEX(&__nc_thread_management_lock);
266 266
267 if (pthread_cond_init(&__nc_last_thread_cond, NULL) != 0) 267 if (pthread_cond_init(&__nc_last_thread_cond, NULL) != 0)
268 __builtin_trap(); 268 __builtin_trap();
269 STAILQ_INIT(&__nc_thread_memory_blocks[0]); 269 STAILQ_INIT(&__nc_thread_memory_blocks[0]);
270 STAILQ_INIT(&__nc_thread_memory_blocks[1]); 270 STAILQ_INIT(&__nc_thread_memory_blocks[1]);
271 271
272 __nc_thread_initialized = 1; 272 __nc_thread_initialized = 1;
273 } 273 }
274 274
275 #if defined(NACL_IN_IRT)
276
277 /* 275 /*
278 * This is used by the IRT for user threads. We initialize all fields 276 * This is used by the IRT for user threads. We initialize all fields
279 * so that we get predictable behaviour in case some IRT code does an 277 * so that we get predictable behaviour in case some IRT code does an
280 * unsupported pthread operation on a user thread. 278 * unsupported pthread operation on a user thread.
281 */ 279 */
282 void __nc_initialize_unjoinable_thread(struct nc_combined_tdb *tdb) { 280 void __nc_initialize_unjoinable_thread(struct nc_combined_tdb *tdb) {
283 nc_tdb_init(&tdb->tdb, &tdb->basic_data); 281 nc_tdb_init(&tdb->tdb, &tdb->basic_data);
284 tdb->tdb.joinable = 0; 282 tdb->tdb.joinable = 0;
285 } 283 }
286 284
287 #else 285 #if !defined(NACL_IN_IRT)
288 286
289 /* 287 /*
290 * Will be called from the library startup code, 288 * Will be called from the library startup code,
291 * which always happens on the application's main thread. 289 * which always happens on the application's main thread.
292 */ 290 */
293 void __pthread_initialize(void) { 291 void __pthread_initialize(void) {
294 __pthread_initialize_minimal(TDB_SIZE); 292 __pthread_initialize_minimal(TDB_SIZE);
295 293
296 struct nc_combined_tdb *tdb = (struct nc_combined_tdb *) __nc_get_tdb(); 294 struct nc_combined_tdb *tdb = (struct nc_combined_tdb *) __nc_get_tdb();
297 nc_tdb_init(&tdb->tdb, &tdb->basic_data); 295 nc_tdb_init(&tdb->tdb, &tdb->basic_data);
(...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after
810 808
811 /* 809 /*
812 * We include this directly in this file rather than compiling it 810 * We include this directly in this file rather than compiling it
813 * separately because there is some code (e.g. libstdc++) that uses weak 811 * separately because there is some code (e.g. libstdc++) that uses weak
814 * references to all pthread functions, but conditionalizes its calls only 812 * references to all pthread functions, but conditionalizes its calls only
815 * on one symbol. So if these functions are in another file in a library 813 * on one symbol. So if these functions are in another file in a library
816 * archive, they might not be linked in by static linking. 814 * archive, they might not be linked in by static linking.
817 */ 815 */
818 /* @IGNORE_LINES_FOR_CODE_HYGIENE[1] */ 816 /* @IGNORE_LINES_FOR_CODE_HYGIENE[1] */
819 #include "native_client/src/untrusted/pthread/nc_tsd.c" 817 #include "native_client/src/untrusted/pthread/nc_tsd.c"
OLDNEW
« no previous file with comments | « src/nonsfi/linux/linux_pthread_private.c ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698