Kaynağa Gözat

增加内存检测接口,低于50MB重启设备

guohui 2 yıl önce
ebeveyn
işleme
07ba3c4239
3 değiştirilmiş dosya ile 24 ekleme ve 35 silme
  1. 13 34
      pro/src/main.c
  2. 10 1
      pro/src/sys.c
  3. 1 0
      pro/src/sys.h

+ 13 - 34
pro/src/main.c

@@ -1,47 +1,26 @@
 #include <stdio.h>
 #include "app.h"
 #include "sys.h"
+#include "thread.h"
 
 
-//get dev 
-static void dev_ctrl_main(void* arg)
-{
-    Modbus_Manger manger  ;
-
-    GlobalDeviceManager* _globalDeviceManager = (GlobalDeviceManager*)arg;
-    
-    short rd_data = 0 ;
-
-    //初始化modbus接口
-    // g_modbus_init(&_globalDeviceManager->_globalRelaySampManger,
-    //             _globalDeviceManager->_globalDevInfo.product_relay_ctrl_port,
-    //             0,//type
-    //             1,//addr
-    //             "RELAY");
-    while (1)
-    {
-        //1.读取设备总电压/总电流
-
-        //2.读取设备通道电压电流等参数
-
-        //3.判断是否超过阈值
-
-        //4.执行超限处理动作
-        
-        //5.写入总监控数据库
-
-        //6.写入通道监控数据库
-
-        sleep(1);
-    }
-}
-
-//主函数
 int main(int argc,char* argv[])
 {
+    uint32_t cnt=0;
+
     sys_init();
     _global_device_manage_init(&__globalDeviceManage);
+
     while(1) {
+        cnt++;
+
+        printf("___ main loop %d\n", cnt);
+        if(cnt%60==0) {
+            if(!sys_mem_enough(50*MB)) {
+                printf("___ mem less than 50MB, reboot now ...\n");
+                sys_reboot();
+            }
+        }
         sleep(1);
     }
 

+ 10 - 1
pro/src/sys.c

@@ -1036,7 +1036,16 @@ int sys_is_running(char *prog)
     return (pid)?1:0;
 }
 
-
+int sys_mem_enough(uint32_t len)
+{
+    int flag=0;
+    void *ptr=malloc(len);
+    if(ptr) {
+        flag = 1;
+        free(ptr);
+    }
+    return flag;
+}
 
 
 int sys_init(void)

+ 1 - 0
pro/src/sys.h

@@ -21,6 +21,7 @@ int sys_init(void);
 int sys_reboot(void);
 int sys_set_factory(void);
 
+int sys_mem_enough(uint32_t len);
 int sys_is_running(char *prog);
 int sys_get_path(char *path, char *name);
 int sys_get_net(NetworkInfo_t *para, int ipVersion);