view vd_watchdog/vd_watchdog.c @ 0:71475f5afa92

Watchdog for Vortex86 6071 on FreeBSD
author Thinker K.F. Li <thinker@branda.to>
date Tue, 08 Jul 2008 09:57:54 +0800
parents
children 0b9854adb86c
line wrap: on
line source

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include "vordog.h"

#define DEVNAME "/dev/vordog0"
#define PROG "vd_watchdog"

static void
watchdog(int min) {
    struct vordog_cfg cfg;
    int intval;
    int r;
    int fd;

    fd = open(DEVNAME, O_RDWR);
    if(fd == -1) {
	perror(PROG);
	exit(1);
    }
    cfg.init_val = min;
    cfg.unit = VDT_1M;
    r = ioctl(fd, VDCTL_ENABLE, &cfg);
    if(r == -1) {
	perror(PROG);
	exit(1);
    }
    
    intval = min * 60 * 3 / 4;
    while(1) {
	sleep(intval);
	r = ioctl(fd, VDCTL_RESET);
	if(r == -1) {
	    perror(PROG);
	    exit(1);
	}
	printf("reset\n");
    }
}


int
main(int argc, const char *argv[]) {
    watchdog(1);
    return 0;
}