⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gmon.h

📁 操作系统SunOS 4.1.3版本的源码
💻 H
字号:
/*	@(#)gmon.h 1.1 92/07/30 SMI	*/struct phdr {    char	*lpc;    char	*hpc;    int		ncnt;};    /*     *	histogram counters are unsigned shorts (according to the kernel).     */#define	HISTCOUNTER	unsigned short    /*     *	fraction of text space to allocate for histogram counters     *	here, 1/2     */#define	HISTFRACTION	2    /*     *	Fraction of text space to allocate for from hash buckets.     *	The value of HASHFRACTION is based on the minimum number of bytes     *	of separation between two subroutine call points in the object code.     *	Given MIN_SUBR_SEPARATION bytes of separation the value of     *	HASHFRACTION is calculated as:     *     *		HASHFRACTION = MIN_SUBR_SEPARATION / (2 * sizeof(short) - 1);     *     *	For the VAX, the shortest two call sequence is:     *     *		calls	$0,(r0)     *		calls	$0,(r0)     *     *	which is separated by only three bytes, thus HASHFRACTION is      *	calculated as:     *     *		HASHFRACTION = 3 / (2 * 2 - 1) = 1     *     *	Note that the division above rounds down, thus if MIN_SUBR_FRACTION     *	is less than three, this algorithm will not work!     *     *	On a 680x0, the shortest two-call sequence is:     *     *		jsr	a0@     *		jsr	a0@     *     *	which is separated by only two bytes! My interpretation of the     *	correct value for HASHFRACTION is:     *	     *		HASHFRACTION = floor( MIN_SUBR_SEPARATION / sizeof(short) )     *	or     *		HASHFRACTION = 2 div 2      *	so I get the same results by different means!     *     *  On a SPARC, the shortest two call sequence is:     *     *		call	func1     *		<delay slot instruction>     *		call	func2     *     *  which is separated by 8 bytes.  So HASHFRACTION is:     *     *		HASHFRACTION = 8/((2*2)-1) = 2     *     *     *     *     *     *     */#ifdef sparc#define	HASHFRACTION	2#else#define	HASHFRACTION	1#endif sparc    /*     *	percent of text space to allocate for tostructs     *	with a minimum.     */#define ARCDENSITY	2#define MINARCS		50struct tostruct {    char		*selfpc;    long		count;    unsigned short	link;};    /*     *	a raw arc,     *	    with pointers to the calling site and the called site     *	    and a count.     */struct rawarc {    unsigned long	raw_frompc;    unsigned long	raw_selfpc;    long		raw_count;};    /*     *	general rounding functions.     */#define ROUNDDOWN(x,y)	(((x)/(y))*(y))#define ROUNDUP(x,y)	((((x)+(y)-1)/(y))*(y))#define GMON_OUT	"gmon.out"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -