physmem: keep only one physmem_main
[vpp.git] / src / vlib / unix / main.c
index c90e133..786addf 100644 (file)
@@ -60,6 +60,8 @@ char *vlib_default_runtime_dir __attribute__ ((weak));
 char *vlib_default_runtime_dir = "vlib";
 
 unix_main_t unix_main;
+clib_file_main_t file_main;
+vlib_physmem_main_t physmem_main;
 
 static clib_error_t *
 unix_main_init (vlib_main_t * vm)
@@ -74,7 +76,7 @@ VLIB_INIT_FUNCTION (unix_main_init);
 static void
 unix_signal_handler (int signum, siginfo_t * si, ucontext_t * uc)
 {
-  uword fatal;
+  uword fatal = 0;
   u8 *msg = 0;
 
   msg = format (msg, "received signal %U, PC %U",
@@ -90,10 +92,9 @@ unix_signal_handler (int signum, siginfo_t * si, ucontext_t * uc)
       if (unix_main.vlib_main->main_loop_exit_set)
        {
          syslog (LOG_ERR | LOG_DAEMON, "received SIGTERM, exiting...");
-
-         clib_longjmp (&unix_main.vlib_main->main_loop_exit,
-                       VLIB_MAIN_LOOP_EXIT_CLI);
+         unix_main.vlib_main->main_loop_exit_now = 1;
        }
+      break;
       /* fall through */
     case SIGQUIT:
     case SIGINT:
@@ -434,6 +435,10 @@ unix_config (vlib_main_t * vm, unformat_input_t * input)
                                  vlib_default_runtime_dir, 0);
     }
 
+  error = setup_signal_handlers (um);
+  if (error)
+    return error;
+
   if (um->pidfile)
     {
       if ((error = vlib_unix_validate_runtime_file (um,
@@ -448,10 +453,6 @@ unix_config (vlib_main_t * vm, unformat_input_t * input)
        }
     }
 
-  error = setup_signal_handlers (um);
-  if (error)
-    return error;
-
   if (!(um->flags & UNIX_FLAG_INTERACTIVE))
     {
       openlog (vm->name, LOG_CONS | LOG_PERROR | LOG_PID, LOG_DAEMON);
@@ -626,6 +627,7 @@ vlib_unix_main (int argc, char *argv[])
   vlib_thread_stack_init (0);
 
   __os_thread_index = 0;
+  vm->thread_index = 0;
 
   i = clib_calljmp (thread0, (uword) vm,
                    (void *) (vlib_thread_stacks[0] +