X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvlib%2Funix%2Fmain.c;h=08e593747e024b8f4dfef6a35fc6cb2eb1d36e79;hb=b2dbb36fc265b8996fc7fa310dda447d5b0479cb;hp=82de8ec76322022edcc8981114c827cad21bc5e2;hpb=ad64687e8bc3e208797ce1d5b16936f51d6cf632;p=vpp.git diff --git a/src/vlib/unix/main.c b/src/vlib/unix/main.c index 82de8ec7632..08e593747e0 100755 --- a/src/vlib/unix/main.c +++ b/src/vlib/unix/main.c @@ -67,10 +67,15 @@ unix_main_init (vlib_main_t * vm) { unix_main_t *um = &unix_main; um->vlib_main = vm; - return vlib_call_init_function (vm, unix_input_init); + return 0; } -VLIB_INIT_FUNCTION (unix_main_init); +/* *INDENT-OFF* */ +VLIB_INIT_FUNCTION (unix_main_init) = +{ + .runs_before = VLIB_INITS ("unix_input_init"), +}; +/* *INDENT-ON* */ static int unsetup_signal_handlers (int sig) @@ -86,7 +91,7 @@ unsetup_signal_handlers (int sig) /* allocate this buffer from mheap when setting up the signal handler. dangerous to vec_resize it when crashing, mheap itself might have been - corruptted already */ + corrupted already */ static u8 *syslog_msg = 0; static int last_signum = 0; static uword last_faulting_address = 0; @@ -172,7 +177,7 @@ unix_signal_handler (int signum, siginfo_t * si, ucontext_t * uc) syslog (LOG_ERR | LOG_DAEMON, "%s", syslog_msg); } - /* have to remove SIGABRT to avoid recusive - os_exit calling abort() */ + /* have to remove SIGABRT to avoid recursive - os_exit calling abort() */ unsetup_signal_handlers (SIGABRT); os_exit (1); @@ -367,6 +372,7 @@ VLIB_REGISTER_NODE (startup_config_node,static) = { .function = startup_config_process, .type = VLIB_NODE_TYPE_PROCESS, .name = "startup-config-process", + .process_log2_n_stack_bytes = 18, }; /* *INDENT-ON* */ @@ -495,6 +501,11 @@ unix_config (vlib_main_t * vm, unformat_input_t * input) vlib_default_runtime_dir, 0); } + /* Ensure the runtime directory is created */ + error = vlib_unix_recursive_mkdir ((char *) um->runtime_dir); + if (error) + return error; + error = setup_signal_handlers (um); if (error) return error; @@ -641,7 +652,7 @@ thread0 (uword arg) u8 * vlib_thread_stack_init (uword thread_index) { - vec_validate (vlib_thread_stacks, thread_index); + ASSERT (thread_index < vec_len (vlib_thread_stacks)); vlib_thread_stacks[thread_index] = clib_mem_alloc_aligned (VLIB_THREAD_STACK_SIZE, clib_mem_get_page_size ()); @@ -696,6 +707,7 @@ vlib_unix_main (int argc, char *argv[]) /* always load symbols, for signal handler and mheap memory get/put backtrace */ clib_elf_main_init (vm->name); + vec_validate (vlib_thread_stacks, 0); vlib_thread_stack_init (0); __os_thread_index = 0;