4.4BSD/usr/src/contrib/mprof/mprof.h

Compare this file to the similar file:
Show the results in this format:

/*	mprof.h 2.5 9/14/90 16:01:19	*/
/*	Copyright (c) 1987, Benjamin G. Zorn */

typedef	int	bool;
#define	TRUE	1
#define	FALSE	0

#define	MP_NUM_BINS	1025
#define	MP_HASH_SIZE		8009
#define	SHORT_CALLSTACK_SIZE	5



typedef struct	mp_data_struct {
    int		d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12;
} mpdata_str, *mpdata;

#define	MPDATA_SIZE	(sizeof(mpdata_str))

#define dt_b_small(x)	((x)->d1)
#define dt_b_med(x)	((x)->d2)
#define dt_b_large(x)	((x)->d3)
#define dt_b_xlarge(x)	((x)->d4)
#define dt_n_small(x)	((x)->d5)
#define dt_n_med(x)	((x)->d6)
#define dt_n_large(x)	((x)->d7)
#define dt_n_xlarge(x)	((x)->d8)
#define dt_d_small(x)	((x)->d9)
#define dt_d_med(x)	((x)->d10)
#define dt_d_large(x)	((x)->d11)
#define dt_d_xlarge(x)	((x)->d12)


  
typedef struct	mp_cons_struct {
    int				mpcar;
    struct mp_cons_struct	*mpcdr;
} mpcell_str, *mpcell;

#define	MPCELL_SIZE	(sizeof(mpcell_str))

#define	MP_NIL		-1
#define	mp_car(i)	((i)->mpcar)
#define	mp_cdr(i)	((i)->mpcdr)
#define	mp_null(i)	(((int) i) == MP_NIL)


  
typedef struct mp_function_struct {
    mpdata	lcount;
    unsigned	addr;
    char	*name;
    mpcell	parents;
} mpsym_str, *mpsym;

#define	MPSYM_SIZE	(sizeof(mpsym_str))

#define	fn_addr(fn)	((fn)->addr)
#define	fn_parents(fn)	((fn)->parents)
#define	fn_lcount(fn)	((fn)->lcount)
#define fn_name(fn)	((fn)->name)



typedef struct mp_sstk_struct {
    unsigned	sstack[SHORT_CALLSTACK_SIZE];
    int		allocs, bytes_alloced;
    int		frees, bytes_freed;
} mpsstk_str, *mpsstk;

#define	MPSSTK_SIZE	(sizeof(mpsstk_str))

#define	sstk_addrs(fn)		((fn)->sstack)
#define	sstk_allocs(fn)		((fn)->allocs)
#define	sstk_bytes_alloced(fn)	((fn)->bytes_alloced)
#define	sstk_frees(fn)		((fn)->frees)
#define	sstk_bytes_freed(fn)	((fn)->bytes_freed)

extern	void	mprof_exit();

extern	char	*malloc();
extern	mpcell	mp_cons();
extern	mpsym	mp_new_fn();
extern	mpdata	mp_new_data();
extern	mpdata	mp_add_data();
extern	int	mp_sum_data();
extern	int	mp_sum_calls();
extern	int	mp_sum_kept();
extern	int	mp_hash();
extern	void	mp_puthash();
extern	mpsym	mp_lookup();
extern	void	mp_note_alloc();
extern	mpcell	mp_note_parent();
extern	void	mp_note_leaf();
extern	void	mp_print_addr();
extern	void	mp_print_data();
extern	char	*mp_sprint_data();
extern	void	mp_print_fn();
extern	void	mp_print_parents();
extern	mpcell	mp_has_parent();
extern	void	mprof_print();
extern	void	mpstruct_init();
extern	mpsym	pc_lookup();

extern mpsstk mp_add_leak_table();
extern void mp_remove_leak_table();
extern void mp_print_leak_table();
extern void mpleak_init();

extern	char	*strdup();

#if (defined(vax) || (defined(sun) && !defined(sun4)))
#define get_current_fp(first_local) ((unsigned)&(first_local) + 4)
#endif

#if (defined(vax) || defined(sun))
#include <sys/types.h>
#include <frame.h>
#define prev_fp_from_fp(fp)	(unsigned)(((struct frame *)(fp))->fr_savfp)
#define ret_addr_from_fp(fp)	(unsigned)(((struct frame *)(fp))->fr_savpc)
#endif

  
/* for ultrix 0x38, 4.3 bsd 0x3d, other?
*/
  
#ifdef tahoe
#define	CRT0_ADDRESS		0x3d
#endif
  
#ifdef vax
#define	CRT0_ADDRESS		0x3d
#endif
  
#ifdef sun
#define	CRT0_ADDRESS		0x204c
#endif

#ifdef mips
#define CRT0_ADDRESS		0x0  /* to be filled in later */
#endif