[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@18.118.128.2: ~ $
/*-
 * Copyright (c) 1982, 1986, 1992, 1993
 *	The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 4. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)gmon.h	8.2 (Berkeley) 1/4/94
 */

#ifndef	_SYS_GMON_H
#define	_SYS_GMON_H	1

#include <features.h>

#include <sys/types.h>

/*
 * See gmon_out.h for gmon.out format.
 */

/* structure emitted by "gcc -a".  This must match struct bb in
   gcc/libgcc2.c.  It is OK for gcc to declare a longer structure as
   long as the members below are present.  */
struct __bb
{
  long			zero_word;
  const char		*filename;
  long			*counts;
  long			ncounts;
  struct __bb		*next;
  const unsigned long	*addresses;
};

extern struct __bb *__bb_head;

/*
 * 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 example, on 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!
 *
 * In practice, however, call instructions are rarely at a minimal
 * distance.  Hence, we will define HASHFRACTION to be 2 across all
 * architectures.  This saves a reasonable amount of space for
 * profiling data structures without (in practice) sacrificing
 * any granularity.
 */
#define	HASHFRACTION	2

/*
 * Percent of text space to allocate for tostructs.
 * This is a heuristic; we will fail with a warning when profiling programs
 * with a very large number of very small functions, but that's
 * normally OK.
 * 2 is probably still a good value for normal programs.
 * Profiling a test case with 64000 small functions will work if
 * you raise this value to 3 and link statically (which bloats the
 * text size, thus raising the number of arcs expected by the heuristic).
 */
#define ARCDENSITY	3

/*
 * Always allocate at least this many tostructs.  This
 * hides the inadequacy of the ARCDENSITY heuristic, at least
 * for small programs.
 */
#define MINARCS		50

/*
 * The type used to represent indices into gmonparam.tos[].
 */
#define	ARCINDEX	u_long

/* 
 * Maximum number of arcs we want to allow.
 * Used to be max representable value of ARCINDEX minus 2, but now 
 * that ARCINDEX is a long, that's too large; we don't really want 
 * to allow a 48 gigabyte table.
 * The old value of 1<<16 wasn't high enough in practice for large C++
 * programs; will 1<<20 be adequate for long?  FIXME
 */
#define MAXARCS		(1 << 20)

struct tostruct {
	u_long		selfpc;
	long		count;
	ARCINDEX	link;
};

/*
 * a raw arc, with pointers to the calling site and
 * the called site and a count.
 */
struct rawarc {
	u_long	raw_frompc;
	u_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))

/*
 * The profiling data structures are housed in this structure.
 */
struct gmonparam {
	long int	state;
	u_short		*kcount;
	u_long		kcountsize;
	ARCINDEX	*froms;
	u_long		fromssize;
	struct tostruct	*tos;
	u_long		tossize;
	long		tolimit;
	u_long		lowpc;
	u_long		highpc;
	u_long		textsize;
	u_long		hashfraction;
	long		log_hashfraction;
};

/*
 * Possible states of profiling.
 */
#define	GMON_PROF_ON	0
#define	GMON_PROF_BUSY	1
#define	GMON_PROF_ERROR	2
#define	GMON_PROF_OFF	3

/*
 * Sysctl definitions for extracting profiling information from the kernel.
 */
#define	GPROF_STATE	0	/* int: profiling enabling variable */
#define	GPROF_COUNT	1	/* struct: profile tick count buffer */
#define	GPROF_FROMS	2	/* struct: from location hash bucket */
#define	GPROF_TOS	3	/* struct: destination/count structure */
#define	GPROF_GMONPARAM	4	/* struct: profiling parameters (see above) */

__BEGIN_DECLS

/* Set up data structures and start profiling.  */
extern void __monstartup (u_long __lowpc, u_long __highpc) __THROW;
extern void monstartup (u_long __lowpc, u_long __highpc) __THROW;

/* Clean up profiling and write out gmon.out.  */
extern void _mcleanup (void) __THROW;

__END_DECLS

#endif /* sys/gmon.h */

Filemanager

Name Type Size Permission Actions
acct.h File 3.25 KB 0644
auxv.h File 1.22 KB 0644
bitypes.h File 86 B 0644
cdefs.h File 14.39 KB 0644
debugreg.h File 3.49 KB 0644
dir.h File 922 B 0644
elf.h File 1023 B 0644
epoll.h File 4.34 KB 0644
errno.h File 19 B 0644
eventfd.h File 1.36 KB 0644
fanotify.h File 1.26 KB 0644
fcntl.h File 19 B 0644
file.h File 1.65 KB 0644
fsuid.h File 1.17 KB 0644
gmon.h File 5.97 KB 0644
gmon_out.h File 2.57 KB 0644
inotify.h File 3.75 KB 0644
io.h File 4.97 KB 0644
ioctl.h File 1.72 KB 0644
ipc.h File 1.6 KB 0644
kd.h File 1.09 KB 0644
kdaemon.h File 1.08 KB 0644
klog.h File 1.18 KB 0644
mman.h File 5.44 KB 0644
mount.h File 5.5 KB 0644
msg.h File 2.35 KB 0644
mtio.h File 10.9 KB 0644
param.h File 2.96 KB 0644
pci.h File 917 B 0644
perm.h File 1.11 KB 0644
personality.h File 2.56 KB 0644
poll.h File 2.57 KB 0644
prctl.h File 1.03 KB 0644
procfs.h File 4.85 KB 0644
profil.h File 1.91 KB 0644
ptrace.h File 6.61 KB 0644
queue.h File 19.08 KB 0644
quota.h File 7.72 KB 0644
raw.h File 1.15 KB 0644
reboot.h File 1.59 KB 0644
reg.h File 1.78 KB 0644
resource.h File 3.58 KB 0644
sdt-config.h File 276 B 0644
sdt.h File 18.16 KB 0644
select.h File 4.11 KB 0644
sem.h File 2.01 KB 0644
sendfile.h File 1.77 KB 0644
shm.h File 1.86 KB 0644
signal.h File 20 B 0644
signalfd.h File 1.57 KB 0644
socket.h File 10.24 KB 0644
socketvar.h File 141 B 0644
soundcard.h File 29 B 0644
stat.h File 16.23 KB 0644
statfs.h File 2.06 KB 0644
statvfs.h File 2.77 KB 0644
swap.h File 1.57 KB 0644
syscall.h File 1.32 KB 0644
sysctl.h File 1.98 KB 0644
sysinfo.h File 1.49 KB 0644
syslog.h File 7.52 KB 0644
sysmacros.h File 2.49 KB 0644
termios.h File 74 B 0644
time.h File 6.54 KB 0644
timeb.h File 1.37 KB 0644
timerfd.h File 1.7 KB 0644
times.h File 1.59 KB 0644
timex.h File 2.14 KB 0644
ttychars.h File 2.44 KB 0644
ttydefaults.h File 3.48 KB 0644
types.h File 6.61 KB 0644
ucontext.h File 5.26 KB 0644
uio.h File 4.61 KB 0644
ultrasound.h File 30 B 0644
un.h File 1.43 KB 0644
unistd.h File 20 B 0644
user.h File 5.08 KB 0644
ustat.h File 1.12 KB 0644
utsname.h File 2.44 KB 0644
vfs.h File 161 B 0644
vlimit.h File 1.85 KB 0644
vm86.h File 1.17 KB 0644
vt.h File 22 B 0644
vtimes.h File 2.42 KB 0644
wait.h File 6.44 KB 0644
xattr.h File 4.14 KB 0644