|
|
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))
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.