PROFIL(2)PROFIL(2)NAMEprofil - execution time profile
SYNOPSIS
profil(buff, bufsiz, offset, scale)
add_profil(buff, bufsiz, offset, scale)
char *buff;
int bufsiz, offset, scale;
DESCRIPTION
Buff points to an area of memory whose length (in bytes) is given by
bufsiz. After this call, the user's program counter (pc) is examined
each clock tick (10 milliseconds); 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, fixed-point fraction with 16
bits of fraction: 0x10000 gives a 1-1 mapping of pc's to words in buff;
0x8000 maps each pair of instruction words together.
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
execve is executed, but remains on in child and parent both after a
fork. Profiling is turned off if an update in buff would cause a
memory fault.
The alternate interface add_profil allows multiple areas of
discontiguous memory to be profiled. A single call to profil can be
followed by multiple calls to add_profil. The call to profil has the
effect of removing the profiling of all areas specified by previous
add_profil calls. Being able to specify multiple profiling areas is
useful in a system which scatters code across large ranges of virtual
address space (for example shared libraries).
RETURN VALUE
A 0, indicating success, is always returned.
SEE ALSOgprof(1), setitimer(2), monitor(3)4th Berkeley Distribution May 14, 1986 PROFIL(2)