|
|
1.1 ! root 1: /*- ! 2: * Copyright (c) 1982, 1986 The Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution and use in source and binary forms, with or without ! 6: * modification, are permitted provided that the following conditions ! 7: * are met: ! 8: * 1. Redistributions of source code must retain the above copyright ! 9: * notice, this list of conditions and the following disclaimer. ! 10: * 2. Redistributions in binary form must reproduce the above copyright ! 11: * notice, this list of conditions and the following disclaimer in the ! 12: * documentation and/or other materials provided with the distribution. ! 13: * 3. All advertising materials mentioning features or use of this software ! 14: * must display the following acknowledgement: ! 15: * This product includes software developed by the University of ! 16: * California, Berkeley and its contributors. ! 17: * 4. Neither the name of the University nor the names of its contributors ! 18: * may be used to endorse or promote products derived from this software ! 19: * without specific prior written permission. ! 20: * ! 21: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ! 22: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ! 23: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! 24: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ! 25: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! 26: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ! 27: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ! 28: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ! 29: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ! 30: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ! 31: * SUCH DAMAGE. ! 32: * ! 33: * @(#)gprof.h 7.2 (Berkeley) 2/15/91 ! 34: */ ! 35: ! 36: struct phdr { ! 37: char *lpc; ! 38: char *hpc; ! 39: int ncnt; ! 40: }; ! 41: ! 42: /* ! 43: * histogram counters are unsigned shorts (according to the kernel). ! 44: */ ! 45: #define HISTCOUNTER unsigned short ! 46: ! 47: /* ! 48: * fraction of text space to allocate for histogram counters ! 49: * here, 1/2 ! 50: */ ! 51: #define HISTFRACTION 2 ! 52: ! 53: /* ! 54: * Fraction of text space to allocate for from hash buckets. ! 55: * The value of HASHFRACTION is based on the minimum number of bytes ! 56: * of separation between two subroutine call points in the object code. ! 57: * Given MIN_SUBR_SEPARATION bytes of separation the value of ! 58: * HASHFRACTION is calculated as: ! 59: * ! 60: * HASHFRACTION = MIN_SUBR_SEPARATION / (2 * sizeof(short) - 1); ! 61: * ! 62: * For the VAX, the shortest two call sequence is: ! 63: * ! 64: * calls $0,(r0) ! 65: * calls $0,(r0) ! 66: * ! 67: * which is separated by only three bytes, thus HASHFRACTION is ! 68: * calculated as: ! 69: * ! 70: * HASHFRACTION = 3 / (2 * 2 - 1) = 1 ! 71: * ! 72: * Note that the division above rounds down, thus if MIN_SUBR_FRACTION ! 73: * is less than three, this algorithm will not work! ! 74: * ! 75: * NB: for the kernel we assert that the shortest two call sequence is: ! 76: * ! 77: * calls $0,_name ! 78: * calls $0,_name ! 79: * ! 80: * which is separated by seven bytes, thus HASHFRACTION is calculated as: ! 81: * ! 82: * HASHFRACTION = 7 / (2 * 2 - 1) = 2 ! 83: */ ! 84: #define HASHFRACTION 2 ! 85: ! 86: /* ! 87: * percent of text space to allocate for tostructs ! 88: * with a minimum. ! 89: */ ! 90: #define ARCDENSITY 2 ! 91: #define MINARCS 50 ! 92: ! 93: struct tostruct { ! 94: char *selfpc; ! 95: long count; ! 96: unsigned short link; ! 97: }; ! 98: ! 99: /* ! 100: * a raw arc, ! 101: * with pointers to the calling site and the called site ! 102: * and a count. ! 103: */ ! 104: struct rawarc { ! 105: unsigned long raw_frompc; ! 106: unsigned long raw_selfpc; ! 107: long raw_count; ! 108: }; ! 109: ! 110: /* ! 111: * general rounding functions. ! 112: */ ! 113: #define ROUNDDOWN(x,y) (((x)/(y))*(y)) ! 114: #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.