PROFIL(2)                                               PROFIL(2)

          profil - execution time profile

          profil(buff, bufsiz, offset, scale)
          char *buff;
          int bufsiz, offset, scale;

          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.

          monitor(3), prof(1)

          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.