profil(2)
NAME
profil − execution time profile
SYNTAX
void profil(buff, bufsiz, offset, scale)
char *buff;
int bufsiz, offset, scale;
DESCRIPTION
The specified buff points to an area of core whose length (in bytes) is given by bufsiz. After this call, the user’s program counter (pc) is examined every clock tick (60th second). Then, offset is subtracted from it, and the result multiplied by scale. If the resulting number corresponds to a word inside buff, which is incremented.
The scale is interpreted as an unsigned, fixed-point fraction with binary point at the left: 0177777(8) gives a 1-1 mapping of pc’s to words in buff; 077777(8) maps each pair of instruction words together. 02(8) maps all instructions onto the beginning of buff (producing a non-interrupting core clock).
Profiling is turned off by giving a scale of 0 or 1. It is rendered ineffective by giving a bufsiz of 0. Profiling is turned off when an exec call is executed, but remains on in child and parent both after a fork call. Profiling may be turned off if an update in buff would cause a memory fault.
ASSEMBLER
(profil = 44.)
sys profil; buff; bufsiz; offset; scale