PROFIL(2) BSD System Calls Manual PROFIL(2)
NAME
profil -- control process profiling
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <unistd.h>
int
profil(char *samples, size_t size, u_long offset, u_int scale);
DESCRIPTION
The profil() function enables or disables program counter profiling of the current process. If profil-ing profiling
ing is enabled, then at every clock tick, the kernel updates an appropriate count in the samples
buffer.
The buffer samples contains size bytes and is divided into a series of 16-bit bins. Each bin counts
the number of times the program counter was in a particular address range in the process when a clock
tick occurred while profiling was enabled. For a given program counter address, the number of the cor-responding corresponding
responding bin is given by the relation:
[(pc - offset) / 2] * scale / 65536
The offset parameter is the lowest address at which the kernel takes program counter samples. The
scale parameter ranges from 1 to 65536 and can be used to change the span of the bins. A scale of
65536 maps each bin to 2 bytes of address range; a scale of 32768 gives 4 bytes, 16384 gives 8 bytes
and so on. Intermediate values provide approximate intermediate ranges. A scale value of 0 disables
profiling.
RETURN VALUES
If the scale value is nonzero and the buffer samples contains an illegal address, profil() returns -1,
profiling is terminated and errno is set appropriately. Otherwise profil() returns 0.
FILES
/usr/lib/gcrt0.o profiling C run-time startup file
gmon.out conventional name for profiling output file
ERRORS
The following error may be reported:
[EFAULT] The buffer samples contains an invalid address.
SEE ALSO
gprof(1)
HISTORY
The profil() function appeared in Version 7 AT&T UNIX.
BUGS
This routine should be named profile().
The samples argument should really be a vector of type unsigned short.
The format of the gmon.out file is undocumented.
BSD June 4, 1993 BSD
|