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