1 /* 2 * Copyright (c) 1980 Regents of the University of California. 3 * All rights reserved. The Berkeley software License Agreement 4 * specifies the terms and conditions for redistribution. 5 */ 6 7 #ifndef lint 8 static char sccsid[] = "@(#)busy.c 5.2 (Berkeley) 06/03/87"; 9 #endif not lint 10 11 /* 12 * busy: print an indication of how busy the system is for games. 13 */ 14 #ifndef MAX 15 # define MAX 30 16 #endif 17 18 #include <stdio.h> 19 main(argc, argv) 20 char **argv; 21 { 22 double la[3]; 23 double max; 24 25 loadav(la); 26 max = la[0]; 27 if (la[1] > max) max = la[1]; 28 if (la[2] > max) max = la[2]; 29 if (argc > 1) 30 printf("1=%g, 5=%g, 15=%g, max=%g\n", la[0], la[1], la[2], max); 31 if (max > MAX) 32 printf("100\n"); /* incredibly high, no games allowed */ 33 else 34 printf("0\n"); 35 exit(0); 36 } 37 38 #include <sys/types.h> 39 #include <nlist.h> 40 41 struct nlist nl[] = { 42 { "_avenrun" }, 43 { 0 }, 44 }; 45 46 loadav(avenrun) 47 double *avenrun; 48 { 49 register int i; 50 int kmem; 51 52 if ((kmem = open("/dev/kmem", 0)) < 0) { 53 fprintf(stderr, "No kmem\n"); 54 exit(1); 55 } 56 nlist("/vmunix", nl); 57 if (nl[0].n_type==0) { 58 fprintf(stderr, "No namelist\n"); 59 exit(1); 60 } 61 62 lseek(kmem, (long)nl[0].n_value, 0); 63 read(kmem, avenrun, 3*sizeof(*avenrun)); 64 } 65