我是靠谱客的博主 快乐冬瓜,最近开发中收集的这篇文章主要介绍看门狗定时器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在procd中看到的看门狗。(不过从日志上看其实看门狗是没有生效的,从openwrt的配置文件上看看门狗是需要配置的)

 

参考资料:https://blog.csdn.net/xiaopohaibebo/article/details/8090916

procd中相关函数:

 1 void watchdog_init(int preinit)
 2 {
 3     char *env = getenv("WDTFD");
 4 
 5     if (wdt_fd >= 0)
 6         return;
 7 
 8     wdt_timeout.cb = watchdog_timeout_cb;
 9     if (env) {
10         DEBUG(2, "Watchdog handover: fd=%sn", env);
11         wdt_fd = atoi(env);
12         unsetenv("WDTFD");
13     } else {
14          wdt_fd = open("/dev/watchdog", O_WRONLY);
15     }
16 
17     if (wdt_fd < 0)
18         return;
19 
20     if (!preinit)
21         fcntl(wdt_fd, F_SETFD, fcntl(wdt_fd, F_GETFD) | FD_CLOEXEC);
22 
23     LOG("- watchdog -n");
24     watchdog_timeout(30);/*设置超时时间*/
25     watchdog_timeout_cb(&wdt_timeout);/*定时喂狗*/
26 
27     DEBUG(4, "Opened watchdog with timeout %dsn", watchdog_timeout(0));
28 }
29 
30 static void watchdog_timeout_cb(struct uloop_timeout *t)
31 {
32     watchdog_ping();/*喂狗*/
33     uloop_timeout_set(t, wdt_frequency * 1000 );/*重新定时*/
34 }
35 
36 void watchdog_ping(void)
37 {
38     DEBUG(4, "Pingn");
39     if (wdt_fd >=0 && write(wdt_fd, "X", 1) < 0)
40         ERROR("WDT failed to write: %sn", strerror(errno));
41 }

 

转载于:https://www.cnblogs.com/laymond/p/10042732.html

最后

以上就是快乐冬瓜为你收集整理的看门狗定时器的全部内容,希望文章能够帮你解决看门狗定时器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部