loadavg.h revision 41325
1219820Sjeff/* 2219820Sjeff * Top - a top users display for Berkeley Unix 3219820Sjeff * 4219820Sjeff * Defines required to access load average figures. 5219820Sjeff * 6219820Sjeff * This include file sets up everything we need to access the load average 7219820Sjeff * values in the kernel in a machine independent way. First, it sets the 8219820Sjeff * typedef "load_avg" to be either double or long (depending on what is 9219820Sjeff * needed), then it defines these macros appropriately: 10219820Sjeff * 11219820Sjeff * loaddouble(la) - convert load_avg to double. 12219820Sjeff * intload(i) - convert integer to load_avg. 13219820Sjeff */ 14219820Sjeff 15219820Sjeff/* 16219820Sjeff * We assume that if FSCALE is defined, then avenrun and ccpu are type long. 17219820Sjeff * If your machine is an exception (mips, perhaps?) then make adjustments 18219820Sjeff * here. 19219820Sjeff * 20219820Sjeff * Defined types: load_avg for load averages, pctcpu for cpu percentages. 21219820Sjeff */ 22219820Sjeff#if defined(mips) && !defined(NetBSD) 23219820Sjeff# include <sys/fixpoint.h> 24219820Sjeff# if defined(FBITS) && !defined(FSCALE) 25219820Sjeff# define FSCALE (1 << FBITS) /* mips */ 26219820Sjeff# endif 27219820Sjeff#endif 28219820Sjeff 29219820Sjeff#ifdef FSCALE 30219820Sjeff# 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 45typedef 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