124139Sjoerg/*
224139Sjoerg *  Top - a top users display for Berkeley Unix
324139Sjoerg *
424139Sjoerg *  Defines required to access load average figures.
524139Sjoerg *
624139Sjoerg *  This include file sets up everything we need to access the load average
724139Sjoerg *  values in the kernel in a machine independent way.  First, it sets the
824139Sjoerg *  typedef "load_avg" to be either double or long (depending on what is
924139Sjoerg *  needed), then it defines these macros appropriately:
1024139Sjoerg *
1124139Sjoerg *	loaddouble(la) - convert load_avg to double.
1224139Sjoerg *	intload(i)     - convert integer to load_avg.
1324139Sjoerg */
1424139Sjoerg
1524139Sjoerg/*
1624139Sjoerg * We assume that if FSCALE is defined, then avenrun and ccpu are type long.
1724139Sjoerg * If your machine is an exception (mips, perhaps?) then make adjustments
1824139Sjoerg * here.
1924139Sjoerg *
2024139Sjoerg * Defined types:  load_avg for load averages, pctcpu for cpu percentages.
2124139Sjoerg */
22292110Slidl#if defined(mips) && !(defined(NetBSD) || defined(FreeBSD))
2324139Sjoerg# include <sys/fixpoint.h>
2424139Sjoerg# if defined(FBITS) && !defined(FSCALE)
25292110Slidl#  define FSCALE (1 << FBITS)	/* RISC/os on mips */
2624139Sjoerg# endif
2724139Sjoerg#endif
2824139Sjoerg
2924139Sjoerg#ifdef FSCALE
3024139Sjoerg# define FIXED_LOADAVG FSCALE
3124139Sjoerg# define FIXED_PCTCPU FSCALE
3224139Sjoerg#endif
3324139Sjoerg
3424139Sjoerg#ifdef ibm032
3524139Sjoerg# undef FIXED_LOADAVG
3624139Sjoerg# undef FIXED_PCTCPU
3724139Sjoerg# define FIXED_PCTCPU PCT_SCALE
3824139Sjoerg#endif
3924139Sjoerg
4024139Sjoerg
4124139Sjoerg#ifdef FIXED_PCTCPU
4224139Sjoerg  typedef long pctcpu;
4324139Sjoerg# define pctdouble(p) ((double)(p) / FIXED_PCTCPU)
4424139Sjoerg#else
4524139Sjoergtypedef double pctcpu;
4624139Sjoerg# define pctdouble(p) (p)
4724139Sjoerg#endif
4824139Sjoerg
4924139Sjoerg#ifdef FIXED_LOADAVG
5041325Sdfr  typedef fixpt_t load_avg;
5124139Sjoerg# define loaddouble(la) ((double)(la) / FIXED_LOADAVG)
5224139Sjoerg# define intload(i) ((int)((i) * FIXED_LOADAVG))
5324139Sjoerg#else
5424139Sjoerg  typedef double load_avg;
5524139Sjoerg# define loaddouble(la) (la)
5624139Sjoerg# define intload(i) ((double)(i))
5724139Sjoerg#endif
58