comp_t fields (was: Re: ccpu)

John F Haugh II jfh at rpp386.cactus.org
Mon Apr 22 05:42:35 AEST 1991


In article <16226.280f85ed at levels.sait.edu.au> xtdn at levels.sait.edu.au writes:
>Ray.Moody at Cray.Com writes:
>> Ccpu is used compute a processes percent CPU utilization.  It is a
>> constant traditionally set to exp(-1/20).  It is unusual in that it is
>> one of the very few floating point numbers in the kernel.
>
>What about the comp_t fields in struct acct?  They, while not floats,
>are apparently floating point fields.

So this doesn't turn into a discussion of floating point fields in the
UNIX kernel ...

The comp_t fields are not "floating point fields" in the traditional
sense.  They are a scaled representation of 32 bit integers that the
system uses for various process accounting information.  The function
for decoding one of these gadgets is

	long
	uncompress(comp_t value)
	{
		return (value & 0x1fff) << ((value & 0xc000) >> 13);
	}

The compress function is slightly more complex, but left as an
exercise for the reader.

As an aside, AIX/370 makes considerable use of floating point in the
kernel, so watch out for those generalizations!
-- 
John F. Haugh II        | Distribution to  | UUCP: ...!cs.utexas.edu!rpp386!jfh
Ma Bell: (512) 255-8251 | GEnie PROHIBITED :-) |  Domain: jfh at rpp386.cactus.org
"If liberals interpreted the 2nd Amendment the same way they interpret the
 rest of the Constitution, gun ownership would be mandatory."



More information about the Comp.unix.wizards mailing list