Changeset 4d11204 in mainline
- Timestamp:
- 2015-06-06T14:41:16Z (10 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 0453261, 048cd69
- Parents:
- 87a2f9b
- Location:
- uspace/lib/c
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/fibril.c
r87a2f9b r4d11204 57 57 /** 58 58 * This futex serializes access to ready_list, 59 * serialized_list and manager_list.59 * serialized_list, manager_list and fibril_list. 60 60 */ 61 61 static futex_t fibril_futex = FUTEX_INITIALIZER; … … 126 126 127 127 fibril->waits_for = NULL; 128 129 futex_lock(&fibril_futex); 128 130 list_append(&fibril->all_link, &fibril_list); 131 futex_unlock(&fibril_futex); 129 132 130 133 return fibril; 131 134 } 132 135 133 void fibril_teardown(fibril_t *fibril) 134 { 136 void fibril_teardown(fibril_t *fibril, bool locked) 137 { 138 if (!locked) 139 futex_lock(&fibril_futex); 135 140 list_remove(&fibril->all_link); 141 if (!locked) 142 futex_unlock(&fibril_futex); 136 143 tls_free(fibril->tcb); 137 144 free(fibril); … … 208 215 as_area_destroy(stack); 209 216 } 210 fibril_teardown(srcf->clean_after_me );217 fibril_teardown(srcf->clean_after_me, true); 211 218 srcf->clean_after_me = NULL; 212 219 } … … 294 301 AS_AREA_LATE_RESERVE); 295 302 if (fibril->stack == (void *) -1) { 296 fibril_teardown(fibril );303 fibril_teardown(fibril, false); 297 304 return 0; 298 305 } … … 321 328 322 329 as_area_destroy(fibril->stack); 323 fibril_teardown(fibril );330 fibril_teardown(fibril, false); 324 331 } 325 332 -
uspace/lib/c/generic/libc.c
r87a2f9b r4d11204 122 122 __stdio_done(); 123 123 task_retval(status); 124 fibril_teardown(__tcb_get()->fibril_data );124 fibril_teardown(__tcb_get()->fibril_data, false); 125 125 } 126 126 -
uspace/lib/c/generic/thread.c
r87a2f9b r4d11204 88 88 #endif 89 89 90 fibril_teardown(fibril );90 fibril_teardown(fibril, false); 91 91 92 92 thread_exit(0); -
uspace/lib/c/include/fibril.h
r87a2f9b r4d11204 94 94 extern void fibril_destroy(fid_t fid); 95 95 extern fibril_t *fibril_setup(void); 96 extern void fibril_teardown(fibril_t *f );96 extern void fibril_teardown(fibril_t *f, bool locked); 97 97 extern int fibril_switch(fibril_switch_type_t stype); 98 98 extern void fibril_add_ready(fid_t fid);
Note:
See TracChangeset
for help on using the changeset viewer.