关于Linux watchdog

/* * Watchdog usage. * Author: Serval Li * Date: Jun 27th, 2012 * */ #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <sys/ioctl.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <signal.h> #include <linux/types.h> #include <linux/watchdog.h> int main(void) { int fd; int timeout, flag; char cmd[256]; if ((fd = open("/dev/watchdog", O_RDWR)) < 0) { perror(""); exit(1); } ioctl(fd, WDIOC_GETTIMEOUT, &timeout); printf("Default timeout: %d\n", timeout); timeout = 12; printf("Set timeout to %d\n", timeout); ioctl(fd, WDIOC_SETTIMEOUT, &timeout); ioctl(fd, WDIOC_GETTIMEOUT, &timeout); printf("New timeout: %d\n", timeout); flag = fcntl(0, F_GETFL, 0); flag |= O_NONBLOCK; if (fcntl(0, F_SETFL, flag) < 0) { /* fgets no-block now */ perror("Set stdin to non-block fails."); exit(1); } while (1) { ioctl(fd, WDIOC_KEEPALIVE, 0); fgets(cmd, sizeof(cmd) - 1, stdin); if(strncmp(cmd, "stop", 4) == 0) goto stopwd; sleep(timeout / 2); } stopwd: write(fd, "V", 1); /* This is "V", not "v"! */ close(fd); printf("Close watchdog!"); return 0; }
代码先存下来,使用的是softdog.c实现的Watchdog。其内核模块名为softdog.ko,位于/lib/modules/$kernelver/kernel/drivers/watchdog下面。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值