Annotation of 42BSD/sys/h/gprof.h, revision 1.1.1.1

1.1       root        1: /*     gprof.h 6.1     83/07/29        */
                      2: 
                      3: struct phdr {
                      4:     char       *lpc;
                      5:     char       *hpc;
                      6:     int                ncnt;
                      7: };
                      8: 
                      9:     /*
                     10:      * histogram counters are unsigned shorts (according to the kernel).
                     11:      */
                     12: #define        HISTCOUNTER     unsigned short
                     13: 
                     14:     /*
                     15:      * fraction of text space to allocate for histogram counters
                     16:      * here, 1/2
                     17:      */
                     18: #define        HISTFRACTION    2
                     19: 
                     20:     /*
                     21:      * Fraction of text space to allocate for from hash buckets.
                     22:      * The value of HASHFRACTION is based on the minimum number of bytes
                     23:      * of separation between two subroutine call points in the object code.
                     24:      * Given MIN_SUBR_SEPARATION bytes of separation the value of
                     25:      * HASHFRACTION is calculated as:
                     26:      *
                     27:      *         HASHFRACTION = MIN_SUBR_SEPARATION / (2 * sizeof(short) - 1);
                     28:      *
                     29:      * For the VAX, the shortest two call sequence is:
                     30:      *
                     31:      *         calls   $0,(r0)
                     32:      *         calls   $0,(r0)
                     33:      *
                     34:      * which is separated by only three bytes, thus HASHFRACTION is 
                     35:      * calculated as:
                     36:      *
                     37:      *         HASHFRACTION = 3 / (2 * 2 - 1) = 1
                     38:      *
                     39:      * Note that the division above rounds down, thus if MIN_SUBR_FRACTION
                     40:      * is less than three, this algorithm will not work!
                     41:      *
                     42:      * NB: for the kernel we assert that the shortest two call sequence is:
                     43:      *
                     44:      *         calls   $0,_name
                     45:      *         calls   $0,_name
                     46:      *
                     47:      * which is separated by seven bytes, thus HASHFRACTION is calculated as:
                     48:      *
                     49:      *         HASHFRACTION = 7 / (2 * 2 - 1) = 2
                     50:      */
                     51: #define        HASHFRACTION    2
                     52: 
                     53:     /*
                     54:      * percent of text space to allocate for tostructs
                     55:      * with a minimum.
                     56:      */
                     57: #define ARCDENSITY     2
                     58: #define MINARCS                50
                     59: 
                     60: struct tostruct {
                     61:     char               *selfpc;
                     62:     long               count;
                     63:     unsigned short     link;
                     64: };
                     65: 
                     66:     /*
                     67:      * a raw arc,
                     68:      *     with pointers to the calling site and the called site
                     69:      *     and a count.
                     70:      */
                     71: struct rawarc {
                     72:     unsigned long      raw_frompc;
                     73:     unsigned long      raw_selfpc;
                     74:     long               raw_count;
                     75: };
                     76: 
                     77:     /*
                     78:      * general rounding functions.
                     79:      */
                     80: #define ROUNDDOWN(x,y) (((x)/(y))*(y))
                     81: #define ROUNDUP(x,y)   ((((x)+(y)-1)/(y))*(y))

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.