Changes in uspace/lib/c/generic/thread/fibril.c [7064e71:3fcea34] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/thread/fibril.c
r7064e71 r3fcea34 185 185 void fibril_setup(fibril_t *f) 186 186 { 187 list_initialize(&f->exit_hooks);188 187 futex_lock(&fibril_futex); 189 188 list_append(&f->all_link, &fibril_list); … … 846 845 } 847 846 848 void fibril_run_exit_hooks(fibril_t *f)849 {850 list_foreach_safe(f->exit_hooks, cur, _next) {851 fibril_hook_t *hook = list_get_instance(cur, fibril_hook_t, link);852 list_remove(cur);853 hook->func();854 free(hook);855 }856 }857 858 847 /** 859 848 * Exit a fibril. Never returns. … … 865 854 // TODO: implement fibril_join() and remember retval 866 855 (void) retval; 867 868 fibril_run_exit_hooks(fibril_self());869 856 870 857 fibril_t *f = _ready_list_pop_nonblocking(false); … … 931 918 } 932 919 933 errno_t fibril_add_exit_hook(void (*hook)(void))934 {935 fibril_hook_t *h = malloc(sizeof(fibril_hook_t));936 if (!h)937 return ENOMEM;938 939 DPRINTF("adding exit hook: function %p (fibril_hook_t structure at %p)\n", hook, h);940 941 h->func = hook;942 list_append(&h->link, &fibril_self()->exit_hooks);943 return EOK;944 }945 946 920 errno_t fibril_ipc_wait(ipc_call_t *call, const struct timespec *expires) 947 921 {
Note:
See TracChangeset
for help on using the changeset viewer.