Subversion Repositories planix.SVN

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include <u.h>
2
#include <libc.h>
3
 
4
static int wdog;
5
 
6
int
7
procctl(int pid)
8
{
9
	int ctlfd;
10
	char *ctl;
11
 
12
	ctl = smprint("/proc/%d/ctl", pid);
13
	ctlfd = open(ctl, OWRITE);
14
	if (ctlfd < 0)
15
		sysfatal("open %s: %r", ctl);
16
	free(ctl);
17
	return ctlfd;
18
}
19
 
20
void
21
main(int, char **)
22
{
23
	int ctl;
24
 
25
	wdog = open("#w/wdctl", ORDWR);
26
	if (wdog < 0)
27
		sysfatal("open #w/wdctl: %r");
28
 
29
	switch(rfork(RFPROC|RFNOWAIT|RFFDG)){
30
	case 0:
31
		break;
32
	default:
33
		exits(0);
34
	}
35
 
36
	ctl = procctl(getpid());
37
	fprint(ctl, "pri 18");
38
	close(ctl);
39
 
40
	if (fprint(wdog, "enable") < 0)
41
		sysfatal("write #w/wdctl enable: %r");
42
	for(;;){
43
		sleep(300);		/* allows 4.2GHz CPU, with some slop */
44
		seek(wdog, 0, 0);
45
		if (fprint(wdog, "restart") < 0)
46
			sysfatal("write #w/wdctl restart: %r");
47
	}
48
}