diff options
Diffstat (limited to 'src/core/init.c')
| -rw-r--r-- | src/core/init.c | 47 |
1 files changed, 5 insertions, 42 deletions
diff --git a/src/core/init.c b/src/core/init.c index c923fdf0..f9dee9e2 100644 --- a/src/core/init.c +++ b/src/core/init.c @@ -14,21 +14,16 @@ #include <stdio.h> #include <stdlib.h> -static nni_mtx nni_init_mtx; -static nni_list nni_init_list; -static bool nni_inited = false; - -extern int nni_tls_sys_init(void); +extern int nni_tls_sys_init(void); extern void nni_tls_sys_fini(void); +static bool nni_inited = false; + static int nni_init_helper(void) { int rv; - nni_mtx_init(&nni_init_mtx); - NNI_LIST_INIT(&nni_init_list, nni_initializer, i_node); - nni_inited = true; #ifdef NNG_TEST_LIB static bool cleanup = false; if (!cleanup) { @@ -54,6 +49,8 @@ nni_init_helper(void) nni_pipe_sys_init(); nni_sp_tran_sys_init(); + nni_inited = true; + return (0); } @@ -69,19 +66,6 @@ nni_fini(void) if (!nni_inited) { return; } - if (!nni_list_empty(&nni_init_list)) { - nni_initializer *init; - - nni_mtx_lock(&nni_init_mtx); - while ((init = nni_list_first(&nni_init_list)) != NULL) { - if (init->i_fini != NULL) { - init->i_fini(); - } - init->i_once = 0; - nni_list_remove(&nni_init_list, init); - } - nni_mtx_unlock(&nni_init_mtx); - } nni_sp_tran_sys_fini(); nni_tls_sys_fini(); nni_pipe_sys_fini(); @@ -95,27 +79,6 @@ nni_fini(void) nni_reap_sys_fini(); // must be before timer and aio (expire) nni_stat_sys_fini(); - nni_mtx_fini(&nni_init_mtx); nni_plat_fini(); nni_inited = false; } - -int -nni_initialize(nni_initializer *init) -{ - int rv; - if (init->i_once) { - return (0); - } - nni_mtx_lock(&nni_init_mtx); - if (init->i_once) { - nni_mtx_unlock(&nni_init_mtx); - return (0); - } - if ((rv = init->i_init()) == 0) { - init->i_once = 1; - nni_list_append(&nni_init_list, init); - } - nni_mtx_unlock(&nni_init_mtx); - return (rv); -} |
