Всем привет! Ай нид хелп! В системе (OpenSUSE 11.4), установленной на промышленном ПК (Kontron CP308) используются два сторожевых таймера:
MPU:/dev/shm # ls -l /dev/watchdog /dev/kontronwdt
crw------- 1 root root 10, 59 Jan 31 16:51 /dev/kontronwdt
crw------- 1 root root 10, 130 Jan 31 16:51 /dev/watchdog
Первый - /dev/watchdog, стандартный. Второй /dev/kontronwdt, появился после сборки из исходников к ПромПК двух модулей, которые подгружаются в ядро:
MPU:/dev/shm # lsmod | grep "kontronwdt"
kontronwdt 4964 0
komdrv 36345 1 kontronwdt
На ПромПК крутитится специально ПО, которое имеет доступ к сторожевому таймеру, но при вызове функции открытия происходит ошибка:
"...WDOG|Function sysWdogOpen() terminated with error -2"
и через 15 секунд система перегружается. Я не разработчик данного ПО, поэтому не имею возможности определить как происходит работа с watchdog. Но может быть как то можно определить к какому девайсу /dev/watchdog или /dev/kontronwdt обращается ПО? Может /dev/watchdog нужно вообще вырубить, чтобы не мешался?
Вот что пишется в мануале на ПромПК по поводу /dev/kontronwdt:
By periodically retriggering the watchdog, the system verifies it is still working properly. If the system fails to retrigger the watchdog within a given interval, the watchdog will conclude the system is hung up. Depending on the Board type, the Watchdog can cause one of the configurable events: RESET, NMI, or IRQ. Additionally, the Watchdog can be operated in a timeout mode, without generation of an event. And, as a special feature, the Watchdog provides a so-called «dual stage» or «cascaded» mode. In this mode, an IRQ or NMI event is generated on the first occurence of a Watchdog timeout, giving the application a chance to recover. If retriggering does not start again, a second watchdog timeout will cause the system to be reset. The available Watchdog operation modes for a particular board can always be queried by looking into /proc/driver/kontron_[boardname]_drv/wd/options Watchdog device node The Watchdog driver is registered to the following device node Watchdog Device Node: Name /dev/kontronwdt File type c Major number 10 Minor number n
With
n = 130 ( = WATCHDOG_MINOR) If the kontronwdt is the only Watchdog driver running
n <> 130 If there is already another watchdog driver registered to the WATCHDOG_MINOR devicenode , kontronwdt will register a misc device with a dynamic minor number. In this case, the driver will emit a kernel message «Kontronwdt:registered Watchdog with minor=<minornumber>» on load (call dmesg to see this message).