Changes in uspace/lib/c/generic/thread.c [e7267a2:6aeca0d] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/thread.c
re7267a2 r6aeca0d 46 46 #include "private/thread.h" 47 47 48 #ifdef FUTEX_UPGRADABLE 49 #include <rcu.h> 50 #endif 51 52 48 53 /** Main thread function. 49 54 * … … 63 68 __tcb_set(fibril->tcb); 64 69 70 #ifdef FUTEX_UPGRADABLE 71 rcu_register_fibril(); 72 futex_upgrade_all_and_wait(); 73 #endif 74 65 75 uarg->uspace_thread_function(uarg->uspace_thread_arg); 66 76 /* … … 73 83 /* If there is a manager, destroy it */ 74 84 async_destroy_manager(); 75 fibril_teardown(fibril); 85 86 #ifdef FUTEX_UPGRADABLE 87 rcu_deregister_fibril(); 88 #endif 89 90 fibril_teardown(fibril, false); 76 91 77 92 thread_exit(0); … … 101 116 void *stack = as_area_create(AS_AREA_ANY, stack_size, 102 117 AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE | AS_AREA_GUARD | 103 AS_AREA_LATE_RESERVE );118 AS_AREA_LATE_RESERVE, AS_AREA_UNPAGED); 104 119 if (stack == AS_MAP_FAILED) { 105 120 free(uarg); 106 121 return ENOMEM; 107 122 } 123 124 /* Make heap thread safe. */ 125 malloc_enable_multithreaded(); 108 126 109 127 uarg->uspace_entry = (void *) FADDR(__thread_entry);
Note:
See TracChangeset
for help on using the changeset viewer.