跳转到内容

Linux 内核/Softdog 驱动程序

来自维基教科书,开放世界中的开放书籍

看门狗定时器是一种设备,如果检测到系统挂起,它会触发系统重置。在系统上运行的程序应该定期通过写入“服务脉冲”来服务看门狗定时器。如果在特定时间段内没有为看门狗提供服务,看门狗会认为系统已挂起,并触发系统重置。

通常,看门狗定时器作为附加卡实现,或作为微控制器内的片上外设实现。但是,如果没有硬件看门狗,Linux 内核可以使用内核计时器提供软件看门狗。

在 Linux 中,看门狗驱动程序为用户空间提供了字符驱动程序接口。当向看门狗驱动程序写入一些数据时,看门狗驱动程序会为看门狗硬件提供服务。用户空间应用程序根据看门狗超时时间定期向看门狗驱动程序写入一些数据。如果由于某种原因用户空间应用程序挂起,看门狗设备不会得到服务,因此会触发系统重置。

通常,写入看门狗驱动程序的应用程序是看门狗守护进程,它监控系统中的进程,以及其他参数,例如 CPU 利用率、内存利用率等等。

当打开 softdog 驱动程序时,softdog 会调度一个内核计时器,在指定的时间间隔后过期。当向驱动程序写入一些数据时,softdog 驱动程序会重新调度计时器。用户空间看门狗守护进程定期写入驱动程序,计时器会不断重新调度,因此计时器回调永远不会被调用。如果看门狗守护进程停止写入驱动程序,计时器会过期并调用回调。在计时器回调中,系统会重新启动。


⚲ API

linux/watchdog.hinc
watchdog_register_deviceid


👁 示例

drivers/watchdog/softdog.csrc


📚 参考

Linux 看门狗支持 doc
嵌入式系统/看门狗定时器
华夏公益教科书