linux watchdog驱动工作原理

Linux Watchdog驱动管理/dev/watchdog文件,通过注册、ioctl接口设置和定时ping维持系统稳定。当超过预设timeout无喂狗操作,系统将复位。驱动注册通过watchdog_register_device,ioctl调用如WDIOC_SETTIMEOUT、WDIOC_KEEPALIVE控制超时和喂狗。硬件或驱动不同,工作方式略有差异,通常启动timer进行定时例测更新。
摘要由CSDN通过智能技术生成

无论硬件watchdog还是由软件模拟的硬件watchdog,最终都是管理的/dev/watchdog文件。Linux内核自身有watchdog驱动的实现,其主要代码在drivers/watchdog下。其工作的大概流程是,先注册watchdog驱动,系统通过start启动/dev/watchdog设备后,由定时的ping来保证喂狗,如果在timeout时间内检测到都没有喂狗的话,就会系统复位修复。

注册watchdog驱动

通过watchdog_register_device注册watchdog_device为对象的watchdog驱动。Watchdog的结构如下:

truct watchdog_device {
int id;
struct cdev cdev;
struct device *dev;
struct device *parent;
const struct watchdog_info *info;
const struct watchdog_ops *ops;
unsigned int bootstatus;
unsigned int timeout;
unsigned int min_timeout;
unsigned int max_timeout;
void *driver_data;
struct mutex lock;
unsigned long status;
/* Bit numbers for status flags */
#define WDOG_ACTIVE 0 /* Is the watchdog running/active */
#define WDOG_DEV_OPEN 1 /* Opened via /dev/watchdog ? */
#define WDOG_ALLOW_RELEASE 2 /* Did we receive the magic char ? */
#define WDOG_NO_WAY_OUT 3 /* Is 'nowayout' feature s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值