1*b89261baSDavid van Moolenbroek /* 2*b89261baSDavid van Moolenbroek * Copyright (c) 1984 through 2008, William LeFebvre 3*b89261baSDavid van Moolenbroek * All rights reserved. 4*b89261baSDavid van Moolenbroek * 5*b89261baSDavid van Moolenbroek * Redistribution and use in source and binary forms, with or without 6*b89261baSDavid van Moolenbroek * modification, are permitted provided that the following conditions are met: 7*b89261baSDavid van Moolenbroek * 8*b89261baSDavid van Moolenbroek * * Redistributions of source code must retain the above copyright 9*b89261baSDavid van Moolenbroek * notice, this list of conditions and the following disclaimer. 10*b89261baSDavid van Moolenbroek * 11*b89261baSDavid van Moolenbroek * * Redistributions in binary form must reproduce the above 12*b89261baSDavid van Moolenbroek * copyright notice, this list of conditions and the following disclaimer 13*b89261baSDavid van Moolenbroek * in the documentation and/or other materials provided with the 14*b89261baSDavid van Moolenbroek * distribution. 15*b89261baSDavid van Moolenbroek * 16*b89261baSDavid van Moolenbroek * * Neither the name of William LeFebvre nor the names of other 17*b89261baSDavid van Moolenbroek * contributors may be used to endorse or promote products derived from 18*b89261baSDavid van Moolenbroek * this software without specific prior written permission. 19*b89261baSDavid van Moolenbroek * 20*b89261baSDavid van Moolenbroek * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21*b89261baSDavid van Moolenbroek * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22*b89261baSDavid van Moolenbroek * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23*b89261baSDavid van Moolenbroek * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24*b89261baSDavid van Moolenbroek * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25*b89261baSDavid van Moolenbroek * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26*b89261baSDavid van Moolenbroek * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27*b89261baSDavid van Moolenbroek * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28*b89261baSDavid van Moolenbroek * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29*b89261baSDavid van Moolenbroek * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30*b89261baSDavid van Moolenbroek * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31*b89261baSDavid van Moolenbroek */ 32*b89261baSDavid van Moolenbroek 33*b89261baSDavid van Moolenbroek /* 34*b89261baSDavid van Moolenbroek * Top - a top users display for Berkeley Unix 35*b89261baSDavid van Moolenbroek * 36*b89261baSDavid van Moolenbroek * Defines required to access load average figures. 37*b89261baSDavid van Moolenbroek * 38*b89261baSDavid van Moolenbroek * This include file sets up everything we need to access the load average 39*b89261baSDavid van Moolenbroek * values in the kernel in a machine independent way. First, it sets the 40*b89261baSDavid van Moolenbroek * typedef "load_avg" to be either double or long (depending on what is 41*b89261baSDavid van Moolenbroek * needed), then it defines these macros appropriately: 42*b89261baSDavid van Moolenbroek * 43*b89261baSDavid van Moolenbroek * loaddouble(la) - convert load_avg to double. 44*b89261baSDavid van Moolenbroek * intload(i) - convert integer to load_avg. 45*b89261baSDavid van Moolenbroek */ 46*b89261baSDavid van Moolenbroek 47*b89261baSDavid van Moolenbroek /* 48*b89261baSDavid van Moolenbroek * We assume that if FSCALE is defined, then avenrun and ccpu are type long. 49*b89261baSDavid van Moolenbroek * If your machine is an exception (mips, perhaps?) then make adjustments 50*b89261baSDavid van Moolenbroek * here. 51*b89261baSDavid van Moolenbroek * 52*b89261baSDavid van Moolenbroek * Defined types: load_avg for load averages, pctcpu for cpu percentages. 53*b89261baSDavid van Moolenbroek */ 54*b89261baSDavid van Moolenbroek #if defined(mips) && !defined(NetBSD) 55*b89261baSDavid van Moolenbroek # include <sys/fixpoint.h> 56*b89261baSDavid van Moolenbroek # if defined(FBITS) && !defined(FSCALE) 57*b89261baSDavid van Moolenbroek # define FSCALE (1 << FBITS) /* mips */ 58*b89261baSDavid van Moolenbroek # endif 59*b89261baSDavid van Moolenbroek #endif 60*b89261baSDavid van Moolenbroek 61*b89261baSDavid van Moolenbroek #ifdef FSCALE 62*b89261baSDavid van Moolenbroek # define FIXED_LOADAVG FSCALE 63*b89261baSDavid van Moolenbroek # define FIXED_PCTCPU FSCALE 64*b89261baSDavid van Moolenbroek #endif 65*b89261baSDavid van Moolenbroek 66*b89261baSDavid van Moolenbroek #ifdef ibm032 67*b89261baSDavid van Moolenbroek # undef FIXED_LOADAVG 68*b89261baSDavid van Moolenbroek # undef FIXED_PCTCPU 69*b89261baSDavid van Moolenbroek # define FIXED_PCTCPU PCT_SCALE 70*b89261baSDavid van Moolenbroek #endif 71*b89261baSDavid van Moolenbroek 72*b89261baSDavid van Moolenbroek 73*b89261baSDavid van Moolenbroek #ifdef FIXED_PCTCPU 74*b89261baSDavid van Moolenbroek typedef long pctcpu; 75*b89261baSDavid van Moolenbroek # define pctdouble(p) ((double)(p) / FIXED_PCTCPU) 76*b89261baSDavid van Moolenbroek #else 77*b89261baSDavid van Moolenbroek typedef double pctcpu; 78*b89261baSDavid van Moolenbroek # define pctdouble(p) (p) 79*b89261baSDavid van Moolenbroek #endif 80*b89261baSDavid van Moolenbroek 81*b89261baSDavid van Moolenbroek #ifdef FIXED_LOADAVG 82*b89261baSDavid van Moolenbroek typedef long load_avg; 83*b89261baSDavid van Moolenbroek # define loaddouble(la) ((double)(la) / FIXED_LOADAVG) 84*b89261baSDavid van Moolenbroek # define intload(i) ((int)((i) * FIXED_LOADAVG)) 85*b89261baSDavid van Moolenbroek #else 86*b89261baSDavid van Moolenbroek typedef double load_avg; 87*b89261baSDavid van Moolenbroek # define loaddouble(la) (la) 88*b89261baSDavid van Moolenbroek # define intload(i) ((double)(i)) 89*b89261baSDavid van Moolenbroek #endif 90