PCSAMPLE(2)                     System Calls                     PCSAMPLE(2)
NAME
       pcsample - program execution time profile
SYNOPSIS
       #include <pcsample.h>       
long pcsample(
uintptr_t samples[], 
long nsamples);
DESCRIPTION
       The 
pcsample() function provides CPU-use statistics by profiling the
       amount of 
CPU time expended by a program.
       For profiling dynamically-linked programs and 64-bit programs, it is
       superior to the 
profil(2) function, which assumes that the entire
       program is contained in a small, contiguous segment of the address
       space, divides this segment into "bins", and on each clock tick
       increments the counter in the bin where the program is currently
       executing. With shared libraries creating discontinuous program
       segments spread throughout the address space, and with 64-bit address
       spaces so large that the size of "bins" would be measured in
       megabytes, the 
profil() function is of limited value.
       The 
pcsample() function is passed an array 
samples containing       
nsamples pointer-sized elements. During program execution, the kernel
       samples the program counter of the process, storing unadulterated
       values in the array on each clock tick. The kernel stops writing to
       the array when it is full, which occurs after 
nsamples / 
HZ seconds
       of process virtual time. The 
HZ value is obtained by invoking the
       call 
sysconf(_SC_CLK_TCK). See 
sysconf(3C).
       The sampling can be stopped by a subsequent call to 
pcsample() with
       the 
nsamples argument set to 0.  Like 
profil(), sampling continues
       across a call to 
fork(2), but is disabled by a call to one of the       
exec family of functions (see 
exec(2)). It is also disabled if an
       update of the 
samples[] array causes a memory fault.
RETURN VALUES
       The 
pcsample() function always returns 
0 the first time it is called.
       On subsequent calls, it returns the number of samples that were
       stored during the previous invocation. If 
nsamples is invalid, it
       returns 
-1 and sets 
errno to indicate the error.
ERRORS
       The 
pcsample() function will fail if:       
EINVAL                 The value of 
nsamples is not valid.
ATTRIBUTES
       See 
attributes(7) for descriptions of the following attributes:
       +--------------------+-------------------+
       |  ATTRIBUTE TYPE    |  ATTRIBUTE VALUE  |
       +--------------------+-------------------+
       |MT-Level            | Async-Signal-Safe |
       +--------------------+-------------------+
       |Interface Stability | Stable            |
       +--------------------+-------------------+
SEE ALSO
       exec(2), 
fork(2), 
profil(2), 
sysconf(3C), 
attributes(7)                               March 10, 1998                    PCSAMPLE(2)