Browse Source

增加系统异常信号时关看门狗操作,防止看门狗引起复位

guohui 1 year ago
parent
commit
0e9094e212
2 changed files with 17 additions and 3 deletions
  1. 16 2
      pro/src/sys.c
  2. 1 1
      pro/src/sys.h

+ 16 - 2
pro/src/sys.c

@@ -1402,19 +1402,32 @@ int sys_wdog_feed(void)
 
     return r;
 }
+int sys_wdog_en(int flag)
+{
+    if(wdog_is_en()) {
+        write(wdog_fd, flag:"1":"0", 1);
+    }
+    return 0;
+}
 
 
 static void sig_handler(int signo)
 {
     printf("sigint_handler, signo: %d\n", signo);
-    //wdog_enable(0);
-
+    wdog_enable(0);
 }
 static void sig_init(void)
 {
     signal(SIGINT,  sig_handler);
     signal(SIGTERM, sig_handler);
     signal(SIGKILL, sig_handler);
+    signal(SIGABRT, sig_handler);
+    signal(SIGFPE,  sig_handler);
+    signal(SIGSEGV, sig_handler);
+    signal(SIGILL,  sig_handler);
+    signal(SIGQUIT, sig_handler);
+    signal(SIGHUP,  sig_handler);
+    signal(SIGBUS,  sig_handler);
 }
 
 static void* polling_thread(void *arg)
@@ -1707,6 +1720,7 @@ int sys_restart_app(void)
 
 int sys_init(void)
 {
+    sig_init();
     initLogger();
     lock_s_init();
     paras_init();

+ 1 - 1
pro/src/sys.h

@@ -38,5 +38,5 @@ int sys_get_ip_ver(char *addr);
 int sys_heap_remain(void);
 int sys_wdog_init(void);
 int sys_wdog_feed(void);
-
+int sys_wdog_en(int flag);
 #endif