在我的(嵌入式)系统上,我有多个看门狗字符设备:
# ls -al /dev/watchdog*
crw------- 1 imp root 10, 130 Apr 26 07:43 /dev/watchdog
crw------- 1 root root 253, 0 Apr 26 07:44 /dev/watchdog0
crw------- 1 root root 253, 1 Apr 26 07:44 /dev/watchdog1
# dmesg | grep -i watchdog
[ 2.342104] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
[ 6.713125] softdog: Software Watchdog Timer: 0.08 initialized. soft_noboot=0 soft_margin=120 sec soft_panic=0 (nowayout=1)
我很确定这/dev/watchdog0
是硬件看门狗,也是/dev/watchdog1
软件看门狗,但为什么还有一个/dev/watchdog
?
背景:软件看门狗配置了nowayout
标志,因此,一旦被喂入,它就不会再停止,直到重新启动。然而,写入/dev/watchdog
似乎不会触发软件看门狗,也不会给我提供重要的nowayout
功能。我可以/dev/watchdog1
直接使用,但随后我需要一些可靠的识别正确的软件看门狗设备文件名的方法...
答案1
我也有同样的问题。根据内核文档:
- id: [...] id 0 是特殊的。它既有 /dev/watchdog0 cdev(动态主要,次要 0),也有旧的 /dev/watchdog Miscdev。调用 watchdog_register_device 时会自动设置 id。
换句话说,/dev/watchdog
两者/dev/watchdog0
都指向同一个设备。任何额外的看门狗的编号都将大于0
并且只有一个设备节点。