Changeset d50f3e5 in mainline for uspace/lib/c


Ignore:
Timestamp:
2025-03-09T20:06:24Z (11 months ago)
Author:
Matěj Volf <git@…>
Children:
53e652d
Parents:
af28af6
git-author:
Matěj Volf <git@…> (2025-03-09 20:05:51)
git-committer:
Matěj Volf <git@…> (2025-03-09 20:06:24)
Message:

decrease scrope of pthread keys support

Location:
uspace/lib/c
Files:
1 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/libc.c

    raf28af6 rd50f3e5  
    173173void __libc_exit(int status)
    174174{
    175         fibril_run_exit_hooks(&main_fibril);
    176 
    177175        /*
    178176         * GCC extension __attribute__((destructor)),
  • uspace/lib/c/generic/private/fibril.h

    raf28af6 rd50f3e5  
    7070        fibril_owner_info_t *waits_for;
    7171        fibril_event_t *sleep_event;
    72 
    73         list_t exit_hooks;
    7472};
    75 
    76 typedef struct {
    77         link_t link;
    78         void (*func)(void);
    79 } fibril_hook_t;
    8073
    8174extern fibril_t *fibril_alloc(void);
     
    9386extern errno_t fibril_ipc_wait(ipc_call_t *, const struct timespec *);
    9487extern void fibril_ipc_poke(void);
    95 
    96 extern void fibril_run_exit_hooks(fibril_t *);
    9788
    9889/**
  • uspace/lib/c/generic/thread/fibril.c

    raf28af6 rd50f3e5  
    185185void fibril_setup(fibril_t *f)
    186186{
    187         list_initialize(&f->exit_hooks);
    188187        futex_lock(&fibril_futex);
    189188        list_append(&f->all_link, &fibril_list);
     
    846845}
    847846
    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 
    858847/**
    859848 * Exit a fibril. Never returns.
     
    865854        // TODO: implement fibril_join() and remember retval
    866855        (void) retval;
    867 
    868         fibril_run_exit_hooks(fibril_self());
    869856
    870857        fibril_t *f = _ready_list_pop_nonblocking(false);
     
    931918}
    932919
    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 
    946920errno_t fibril_ipc_wait(ipc_call_t *call, const struct timespec *expires)
    947921{
  • uspace/lib/c/include/fibril.h

    raf28af6 rd50f3e5  
    7474extern __noreturn void fibril_exit(long);
    7575
    76 /** Add a function to be called after fibril exits, just before it is destroyed */
    77 extern errno_t fibril_add_exit_hook(void (*)(void));
    78 
    7976__HELENOS_DECLS_END;
    8077
  • uspace/lib/c/meson.build

    raf28af6 rd50f3e5  
    177177        'test/double_to_str.c',
    178178        'test/fibril/timer.c',
    179         'test/fibril/exit_hook.c',
    180179        'test/getopt.c',
    181180        'test/gsort.c',
  • uspace/lib/c/test/main.c

    raf28af6 rd50f3e5  
    3838PCUT_IMPORT(double_to_str);
    3939PCUT_IMPORT(fibril_timer);
    40 PCUT_IMPORT(fibril_exit_hook);
    4140PCUT_IMPORT(getopt);
    4241PCUT_IMPORT(gsort);
Note: See TracChangeset for help on using the changeset viewer.