Forum Moderators: open

Message Too Old, No Replies

Watchdog Feature

Help needed implementing iton a remote server

         

a1call

6:51 pm on Feb 2, 2006 (gmt 0)

10+ Year Member



Hi,

I am in charge of setting up a remote server. The computer has a built in hardware "watchdog" feature. The way I understand it we have to setup a watchdog timer in the BIOS. This causes the computer to reboot constantly when the timer runs out. A software component has to reset this timer constantly for the computer to function. In case of a system software crash the software would fail to reset the timer and the computer would automatically reboot and thus this is a method for managing and coming out of system crashes.
The problem is that no software component is provided except for a sample assembly (text in the manual) which I do not know how to implement. Is there a windows xp feature that can take advantage of this. Else how would i issue assembly system commands programmatically?
Any help is as always much appreciated.

lammert

1:00 pm on Feb 6, 2006 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member Top Contributors Of The Month



For good watchdog functionality, you should program the watchdog reset in the main loop of your main application. This is easier said than done, because you probably will use off the shelf software. You have to find a way to test if the main loop of your application is still working. Running a watchdog trigger in an external program or loop has no advantage, because it will only test if this external program is still running, but it doesn't tell anything about the other programs.

Suppose your main application is an SQL server and you want to reboot when this software hangs. If you have an external utility triggering the watchdog timer, it needs to periodically reset the timer so no reboot will take place if the SQL server software runs normally. If the SQL server software crashes and you want to trigger a reboot on this, you have to write a utility that does the following:


LOOP_START
connect_to_sql_server();
do_read_write_to_test_sql_server();
close_sql_server_connection();
if (success_sql()) trigger_watchdog();
else WAIT INDEFINITE_TIME;
WAIT SOME_SECONDS;
RESTART LOOP;
LOOP_END