|
|
1.1 ! root 1: /* ! 2: * Print the system load average, ! 3: * and the time of day. ! 4: */ ! 5: ! 6: #include <stdio.h> ! 7: #include <nlist.h> ! 8: ! 9: struct nlist nl[] = { ! 10: {"_avenrun"}, ! 11: {0} ! 12: }; ! 13: ! 14: double avenrun[3]; ! 15: ! 16: main(argc,argv) ! 17: char **argv; ! 18: { ! 19: register int i,kmem; ! 20: long maddr; ! 21: long t; ! 22: int count = -1, interval = 0; ! 23: register char *dunix = "/unix", *dkmem = "/dev/kmem"; ! 24: extern char _sobuf[BUFSIZ]; ! 25: ! 26: setbuf (stdout, _sobuf); ! 27: ! 28: switch (argc) { ! 29: case 5: ! 30: dkmem = argv[4]; ! 31: /* no break */ ! 32: case 4: ! 33: dunix = argv[3]; ! 34: case 3: ! 35: count = atoi (argv[2]); ! 36: case 2: ! 37: interval = atoi (argv[1]); ! 38: case 1: ! 39: break; ! 40: default: ! 41: err("usage: load [interval [count [/unix [/dev/kmem]]]]"); ! 42: } ! 43: ! 44: nlist(dunix, nl); ! 45: if (nl[0].n_type==0) err("no namelist"); ! 46: if ((kmem=open(dkmem,0))<0) err("no kmem"); ! 47: if (0==strcmp(dkmem,"/dev/kmem")) maddr=0; ! 48: else maddr=0x80000000; ! 49: time (&t); ! 50: printf (" 1m 5m 15m\n"); ! 51: ! 52: do { ! 53: register int i; ! 54: ! 55: kseek(kmem,nl[0].n_value,0,maddr); ! 56: kread(kmem,avenrun,sizeof(avenrun)); ! 57: ! 58: for (i = 0; i < sizeof(avenrun)/sizeof(*avenrun); i++) ! 59: printf ("%6.1f", avenrun[i]); ! 60: putchar ('\n'); ! 61: fflush (stdout); ! 62: ! 63: if (count && interval) ! 64: sleep (interval); ! 65: } while (--count && interval); ! 66: } ! 67: ! 68: err(why) ! 69: char *why; ! 70: { ! 71: extern int errno; ! 72: fprintf (stderr,"load: %s",why); ! 73: if (errno) ! 74: fprintf (stderr, " (%d)", errno); ! 75: fprintf (stderr, "\n"); ! 76: exit(2); ! 77: } ! 78: ! 79: kseek(fd,offset,whence,maddr) ! 80: long offset; ! 81: { ! 82: if (-1==lseek(fd,offset&~maddr,whence)) err("kmem seek error"); ! 83: } ! 84: ! 85: kread(fd,buf,siz) ! 86: char *buf; ! 87: { ! 88: if (siz!=read(fd,buf,siz)) err("kmem read error"); ! 89: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.