PROFIL(2) — Silicon Graphics
NAME
profil − execution time profile
SYNOPSIS
profil (buff, bufsiz, offset, scale)
char ∗buff;
int bufsiz, offset, scale;
DESCRIPTION
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 each clock tick; offset is subtracted from it, and the result multiplied by scale. If the resulting number corresponds to a word inside buff, that word is incremented.
The scale is interpreted as an unsigned (16 bit), fixed-point fraction with binary point at the left: FFFF (hex) gives a 1-1 mapping of pc’s to words in buff; FFFF (hex) maps each pair of instruction words together. 2(hex) 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 is executed, but remains on in child and parent both after a fork. Profiling will be turned off if an update in buff would cause a memory fault.
RETURN VALUE
Not defined.
SEE ALSO
ASSEMBLER
moveq#44,D0
movlbuff,A0
movlbufsiz,D1
movloffset,A1
movlD2,save
movlscale,D2
trap#0
movlsave,D2
The D2 register must be saved when calling profil(2) since that register might be in use by the "C" program that calls this routine.
Version 3.6 — December 20, 1987