Changeset 4d11204 in mainline for uspace/lib/c/generic/fibril.c
- 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
- File:
-
- 1 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
Note:
See TracChangeset
for help on using the changeset viewer.