.TH PROFIL 2 .UC 4 .SH NAME profil \- execution time profile .SH SYNOPSIS .nf .B profil(buff, bufsiz, offset, scale) .B char *buff; .B int bufsiz, offset, scale; .fi .SH DESCRIPTION .I Buff points to an area of core whose length (in bytes) is given by .IR bufsiz . After this call, the user's program counter (pc) is examined each clock tick (60th second); .I offset is subtracted from it, and the result multiplied by .IR scale . If the resulting number corresponds to a word inside .I buff, that word is incremented. .PP The scale is interpreted as an unsigned, fixed-point fraction with binary point at the left: 0177777(8) gives a 1-1 mapping of pc's to words in .I buff; 077777(8) maps each pair of instruction words together. 02(8) maps all instructions onto the beginning of .I buff (producing a non-interrupting core clock). .PP Profiling is turned off by giving a .I scale of 0 or 1. It is rendered ineffective by giving a .I bufsiz of 0. Profiling is turned off when an .I exec is executed, but remains on in child and parent both after a .IR fork . Profiling may be turned off if an update in .I buff would cause a memory fault. .SH "SEE ALSO" monitor(3), prof(1) .SH "ASSEMBLER (PDP-11)" (profil = 44.) .br .B sys profil; buff; bufsiz; offset; scale .SH BUGS Profiling does not work for interpreters; if a signal were given to a process when its cpu-time clock ticked then profiling interpreters would be possible.