From c9bbe8eb574fe10ff16cc71a23fcc9b31fb8ed04 Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Sun, 5 Dec 2021 22:11:24 -0500 Subject: Use static initialization for lists and mutexes. This eliminates some run-time initialization, moving it to compile time. Additional follow up work will expand on this to simplify initialization and reduce the need for certain locks. --- src/core/init.c | 47 +++++------------------------------------------ 1 file changed, 5 insertions(+), 42 deletions(-) (limited to 'src/core/init.c') 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 #include -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); -} -- cgit v1.2.3-70-g09d2