Annotation of 43BSDTahoe/sys/h/gprof.h, revision 1.1

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