⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pcwd-watchdog.txt

📁 嵌入式系统设计与实例开发实验教材二源码 多线程应用程序设计 串行端口程序设计 AD接口实验 CAN总线通信实验 GPS通信实验 Linux内核移植与编译实验 IC卡读写实验 SD驱动使
💻 TXT
字号:
                     Berkshire Products PC Watchdog Card                   Support for ISA Cards  Revision A and C           Documentation and Driver by Ken Hollis <kenji@bitgate.com> The PC Watchdog is a card that offers the same type of functionality that the WDT card does, only it doesn't require an IRQ to run.  Furthermore, the Revision C card allows you to monitor any IO Port to automatically trigger the card into being reset.  This way you can make the card monitor hard drive status, or anything else you need. The Watchdog Driver has one basic role: to talk to the card and send signals to it so it doesn't reset your computer ... at least during normal operation. The Watchdog Driver will automatically find your watchdog card, and will attach a running driver for use with that card.  After the watchdog drivers have initialized, you can then talk to the card using the PC Watchdog program, available from http://ftp.bitgate.com/pcwd/. I suggest putting a "watchdog -d" before the beginning of an fsck, and a "watchdog -e -t 1" immediately after the end of an fsck.  (Remember to run the program with an "&" to run it in the background!) If you want to write a program to be compatible with the PC Watchdog driver, simply do the following:-- Snippet of code --/* * Watchdog Driver Test Program */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <fcntl.h>#include <sys/ioctl.h>#include <linux/pcwd.h>int fd;/* * This function simply sends an IOCTL to the driver, which in turn ticks * the PC Watchdog card to reset its internal timer so it doesn't trigger * a computer reset. */void keep_alive(void){    int dummy;    ioctl(fd, WDIOC_KEEPALIVE, &dummy);}/* * The main program.  Run the program with "-d" to disable the card, * or "-e" to enable the card. */int main(int argc, char *argv[]){    fd = open("/dev/watchdog", O_WRONLY);    if (fd == -1) {	fprintf(stderr, "Watchdog device not enabled.\n");	fflush(stderr);	exit(-1);    }    if (argc > 1) {	if (!strncasecmp(argv[1], "-d", 2)) {	    ioctl(fd, WDIOC_SETOPTIONS, WDIOS_DISABLECARD);	    fprintf(stderr, "Watchdog card disabled.\n");	    fflush(stderr);	    exit(0);	} else if (!strncasecmp(argv[1], "-e", 2)) {	    ioctl(fd, WDIOC_SETOPTIONS, WDIOS_ENABLECARD);	    fprintf(stderr, "Watchdog card enabled.\n");	    fflush(stderr);	    exit(0);	} else {	    fprintf(stderr, "-d to disable, -e to enable.\n");	    fprintf(stderr, "run by itself to tick the card.\n");	    fflush(stderr);	    exit(0);	}    } else {	fprintf(stderr, "Watchdog Ticking Away!\n");	fflush(stderr);    }    while(1) {	keep_alive();	sleep(1);    }}-- End snippet -- Other IOCTL functions include:	WDIOC_GETSUPPORT		This returns the support of the card itself.  This		returns in structure "PCWDS" which returns:			options = WDIOS_TEMPPANIC				  (This card supports temperature)			firmware_version = xxxx				  (Firmware version of the card)	WDIOC_GETSTATUS		This returns the status of the card, with the bits of		WDIOF_* bitwise-anded into the value.  (The comments		are in linux/pcwd.h)	WDIOC_GETBOOTSTATUS		This returns the status of the card that was reported		at bootup.	WDIOC_GETTEMP		This returns the temperature of the card.  (You can also		read /dev/watchdog, which gives a temperature update		every second.)	WDIOC_SETOPTIONS		This lets you set the options of the card.  You can either		enable or disable the card this way.	WDIOC_KEEPALIVE		This pings the card to tell it not to reset your computer. And that's all she wrote! -- Ken Hollis    (kenji@bitgate.com)(This documentation may be out of date.  Check http://ftp.bitgate.com/pcwd/ for the absolute latest additions.)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -