linux软件看门狗概述,Linux软件看门狗

AHA!在挖掘内核的linux / watchdog.h和drivers / watchdog / softdog.c之后,我能够确定软件ioctl()接口的功能.看看它在struct watchdog_info中宣布的功能:

static struct watchdog_info ident = {

.options = WDIOF_SETTIMEOUT |

WDIOF_KEEPALIVEPING |

WDIOF_MAGICCLOSE,

.firmware_version = 0,

.identity = "Software Watchdog",

};

它支持一个魔术关闭(似乎)覆盖CONFIG_WATCHDOG_NOWAYOUT.所以,当正常终止时,我必须将一个char’V’写入/ dev / watchdog,然后关闭它,并且定时器将停止计数.

对/ dev / watchdog的文件描述符的简单ioctl(),询问WDIOC_GETSUPPORT允许用户确定是否设置了该标志.伪码:

int fd;

struct watchdog_info info;

fd = open("/dev/watchdog", O_WRONLY);

if (fd == -1) {

perror("open");

// abort, timer did not start - no additional concerns

}

if (ioctl(fd, WDIOC_GETSUPPORT, &info)) {

perror("ioctl");

// abort, but you probably started the timer! See below.

}

if (WDIOF_MAGICCLOSE & info.options) {

printf("Watchdog supports magic close char\n");

// You have started the timer here! Handle that appropriately.

}

当使用硬件看门狗时,您可能需要使用O_NONBLOCK打开,以便ioctl()不会打开()块(从而检测到忙卡).

如果不支持WDIOF_MAGICCLO​​SE,则应该假设软看门狗配置为NOWAYOUT.记住,只要打开设备就能成功启动倒计时.如果你所做的一切正在探索是否支持魔法关闭,那么魔法就会关闭它.否则,一定要处理你现在有一个运行看门狗的事实.

不幸的是,没有真正的方法可以肯定地知道,没有真正的开始,至少不是我能找到.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值