1 /* 2 * Top - a top users display for Berkeley Unix 3 * 4 * Defines required to access load average figures. 5 * 6 * This include file sets up everything we need to access the load average 7 * values in the kernel in a machine independent way. First, it sets the 8 * typedef "load_avg" to be either double or long (depending on what is 9 * needed), then it defines these macros appropriately: 10 * 11 * loaddouble(la) - convert load_avg to double. 12 * intload(i) - convert integer to load_avg. 13 */ 14 15 /* 16 * We assume that if FSCALE is defined, then avenrun and ccpu are type long. 17 * If your machine is an exception (mips, perhaps?) then make adjustments 18 * here. 19 * 20 * Defined types: load_avg for load averages, pctcpu for cpu percentages. 21 */ 22 #if defined(__mips__) && !(defined(__NetBSD__) || defined(__FreeBSD__)) 23 # include <sys/fixpoint.h> 24 # if defined(FBITS) && !defined(FSCALE) 25 # define FSCALE (1 << FBITS) /* RISC/os on mips */ 26 # endif 27 #endif 28 29 #ifdef FSCALE 30 # define FIXED_LOADAVG FSCALE 31 # define FIXED_PCTCPU FSCALE 32 #endif 33 34 #ifdef ibm032 35 # undef FIXED_LOADAVG 36 # undef FIXED_PCTCPU 37 # define FIXED_PCTCPU PCT_SCALE 38 #endif 39 40 41 #ifdef FIXED_PCTCPU 42 typedef long pctcpu; 43 # define pctdouble(p) ((double)(p) / FIXED_PCTCPU) 44 #else 45 typedef double pctcpu; 46 # define pctdouble(p) (p) 47 #endif 48 49 #ifdef FIXED_LOADAVG 50 typedef fixpt_t load_avg; 51 # define loaddouble(la) ((double)(la) / FIXED_LOADAVG) 52 # define intload(i) ((int)((i) * FIXED_LOADAVG)) 53 #else 54 typedef double load_avg; 55 # define loaddouble(la) (la) 56 # define intload(i) ((double)(i)) 57 #endif 58