看门狗程序是通过“喂狗”的形式不停的给watchdog写入数据,一旦在一定的时间内没有写入,watchdog就会认为程序发生了崩溃,它能够直接出发芯片复位,让linux系统进行重启。在实际的项目中具有重要的作用。
本文讲解linux中标准的看门狗程序,标准指的是设备号为/dev/watchdog,程序如下:
void feed_watchdog()
{
int wd_fd;
wd_fd = open("/dev/watchdog",O_RDWR);
if(wd_fd < 0)
{
printf("wd open failed\n");
return;
}
int timeout = 20;
ioctl(wd_fd, WDIOC_SETOPTIONS, WDIOS_ENABLECARD);
ioctl(wd_fd, WDIOC_SETTIMEOUT, &timeout);
while(1)
{
sleep(10);
ioctl(wd_fd,WDIOC_KEEPALIVE,NULL);
}
close(wd_fd);
}
ioctl(wd_fd, WDIOC_SETOPTIONS, WDIOS_ENABLECARD)是使能watchdog。
ioctl(wd_fd, WDIOC_SETTIMEOUT, &timeout),设置喂狗时间