Linux下的WatchDog

看门狗🐕


看门狗简介

看门狗定时器(Watchdog Timer)是一种定时器,用于检测系统是否正常运行。如果系统在规定时间内没有向看门狗定时器发送复位信号,看门狗定时器就会产生复位信号,使系统复位。看门狗定时器通常用于嵌入式系统中,以防止系统进入死循环或响应时间过长。

看门狗作用

当受到外部或者内部干扰,如电磁干扰或者软件异常造成的程序跑飞。这时候就只能断电让设备重启,设备才可以回复正常。而看门狗可以使系统在一定时间间隔内复位(也就是发生死机或者跑飞这种情况设备可以自己复位而不是人工干预)。因此看门狗是可以保证系统可靠长期稳定运行的有效手段。

看门狗的子系统框架

1730987719128

  • 看门狗的接口在Linux中是高度统一的存在,所以,在Linux中,看门狗的接口是统一的,无论底层硬件如何,上层接口都是一样的。这样,上层应用就可以使用统一的接口来操作看门狗,而不需要关心底层硬件的具体实现。

Demo ONE

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <linux/watchdog.h>
#define WARDOG_DEV "/dev/watchdog"
int main(int argc, char *argv[]){
    int time_out = 10; // 10 seconds timeout for the watchdog
    int ret = 0;
    int fd = open(WARDOG_DEV, O_RDWR);
    if (fd < 0) {
        perror("open");
        exit(1);
    }
    ret = ioctl(fd, WDIOC_SETTIMEOUT, &time_out);
    if (ret < 0) {
        perror("ioctl");
        exit(1);
    }

    // feed the watchdog
    ret = ioctl(fd, WDIOC_KEEPALIVE, NULL);
    if (ret < 0) {
        perror("ioctl");
        exit(1);
    }


    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想和我重名?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值