PROFIL(2)                                               PROFIL(2)

     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 (60th second); 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 frac-
          tion with binary point at the left: 0177777(8) gives a 1-1
          mapping of pc's to words in buff; 077777(8) maps each pair
          of instruction words together.  02(8) 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 may be turned off if
          an update in buff would cause a memory fault.

     SEE ALSO
          monitor(3), prof(1)

     BUGS
          Profiling does not work for interpreters; if a signal were
          given to a process when its cpu-time clock ticked then pro-
          filing interpreters would be possible.