zoukankan      html  css  js  c++  java
  • watchdog

    yes >> /deb/watchdog

    • 禁用代码
    /*
     * Watchdog Driver Test Program
     */
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    #include <fcntl.h>
    #include <signal.h>
    #include <sys/ioctl.h>
    #include <linux/types.h>
    #include <linux/watchdog.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.
     */
    static 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.
     */
    
    static void term(int sig)
    {
    	int flags = WDIOS_DISABLECARD;
    	ioctl(fd, WDIOC_SETOPTIONS, &flags);
    
        close(fd);
        fprintf(stderr, "Stopping watchdog ticks...
    ");
        exit(0);
    }
    
    int main(int argc, char *argv[])
    {
        int flags;
    
        fd = open("/dev/watchdog", O_WRONLY);
    
        if (fd == -1) {
    	fprintf(stderr, "Watchdog device not enabled.
    ");
    	fflush(stderr);
    	exit(-1);
        }
    
        if (argc > 1) {
    	if (!strncasecmp(argv[1], "-d", 2)) {
    	    flags = WDIOS_DISABLECARD;
    	    ioctl(fd, WDIOC_SETOPTIONS, &flags);
    	    fprintf(stderr, "Watchdog card disabled.
    ");
    	    fflush(stderr);
    	    goto end;
    	} else if (!strncasecmp(argv[1], "-e", 2)) {
    	    flags = WDIOS_ENABLECARD;
    	    ioctl(fd, WDIOC_SETOPTIONS, &flags);
    	    fprintf(stderr, "Watchdog card enabled.
    ");
    	    fflush(stderr);
    	    goto end;
    	} else {
    	    fprintf(stderr, "-d to disable, -e to enable.
    ");
    	    fprintf(stderr, "run by itself to tick the card.
    ");
    	    fflush(stderr);
    	    goto end;
    	}
        } else {
    	fprintf(stderr, "Watchdog Ticking Away!
    ");
    	fflush(stderr);
        }
    
        signal(SIGINT, term);
    
        while(1) {
    	keep_alive();
    	sleep(1);
        }
    end:
        close(fd);
        return 0;
    }
    

      

  • 相关阅读:
    分布式和集群
    c++ >>
    c++ ip地址相关
    c++ ip地址的操作 c版
    c++ 缺少动态库
    c++ dirname() basename()
    shell ulimit -n
    shell 进程查询相关的命令
    shell grep 高亮
    c++ swap 函数
  • 原文地址:https://www.cnblogs.com/ahuo/p/13787257.html
Copyright © 2011-2022 走看看