NAME
profil — execution time profile
SYNOPSIS
#include <time.h>
void profil(
unsigned short int *buff,
size_t bufsiz,
size_t offset,
unsigned int scale
);
DESCRIPTION
profil()
controls profiling, by which the system maintains
estimates of the amount of time the calling program spends executing
at various places in its address space.
The
buff
argument must point to an area of memory
whose length (in bytes) is given by
bufsiz.
When profiling is on,
the process's program counter (pc) is examined each clock tick
(CLK_TCK
times per second),
offset
is subtracted from the pc value, and the result is multiplied by
scale.
If the resulting number corresponds to an element
inside the array of
unsigned short ints
to which
buff
points, that element is incremented.
The number of samples per second for a given implementation is given by
CLK_TCK,
which is defined in
<time.h>.
The scale is interpreted as an unsigned, sixteen bit,
fixed-point fraction with binary point at the left: 0177777 (octal)
gives a one-to-one mapping of pc's to words in
buff;
077777 (octal) maps each pair of instruction words together.
02(octal) 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 one of the
exec()
functions 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.
RETURN VALUE
No value is returned.
STANDARDS CONFORMANCE
profil(): SVID2, SVID3, XPG2