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))

Defined struct's

phdr defined in line 9; used 10 times
rawarc defined in line 77; never used
tostruct defined in line 66; used 10 times

Defined macros

ARCDENSITY defined in line 63; used 1 times
HASHFRACTION defined in line 57; used 2 times
HISTCOUNTER defined in line 18; used 2 times
HISTFRACTION defined in line 24; used 4 times
MINARCS defined in line 64; used 2 times
ROUNDDOWN defined in line 86; used 1 times
ROUNDUP defined in line 87; used 1 times

Usage of this include

Last modified: 1986-06-05
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 894
Valid CSS Valid XHTML 1.0 Strict