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

📄 0.h

📁 早期freebsd实现
💻 H
字号:
/*- * Copyright (c) 1980, 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. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by the University of *	California, Berkeley and its contributors. * 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. * *	@(#)0.h	8.1 (Berkeley) 6/6/93 *//* #define DEBUG */#define	CHAR#define	STATIC/* * pxp - Pascal execution profiler * * Bill Joy * University of California, Berkeley (UCB) * Version 1.1 February 1978 *//* * Option flags * * The following options are recognized on the command line by pxp. * Only the u, w, and z options here have effect in comments in the * program; the others are command line only, and unrelated * to the options with the same designations in comments. * *	a	Print all routines in a profile; normally, routines *		which have never been executed have their bodies suppressed. * *	c	Extract profile data from the file core, or the file *		named after the last argument rather than the file 'pmon.out'. *		Must be used with z to have an effect. * *	d	Suppress declarations * *	f	Fully parenthesize expressions. * *	j	Left justify all procedures and functions rather than *		indenting them. * *	n	Eject a new page in the listing as each 'include' file *		is incorporated into the profile. * *	o	Put output prettyprint in first argument file * *	p	Pretty print a main program without processing *		the include statements. * *	t	Print a table summarizing procedure and function call counts. * *	u	Card image mode; only the first 72 chars on a line count. * *	w	Suppress certain warning diagnostics. * *	z	Generate an execution profile of the program. *		May also be followed by a list of procedure and function *		names mixed, if desired, with include file names. *		Only these procedures and functions, and the contents *		of the specified include files will then be profiled. * *  [23456789]	Use the specified number of spaces for the basic *		indenting unit in the program. * *	_	Underline keywords in the output. * *	O	remove `others'.  if an `others' label is found in a *		case statement the case statement (minus the others case) *		is printed as a guarded case statement, and the others case *		is the else branch of the guard.  this transformation *		causes the case selector to be evaluated twice, a lose *		if the selector has side-effects.  this option is only *		available if pxp is compiled with RMOTHERS defined. */char	all, core, nodecl, full, justify, pmain, stripcomm, table, underline;char	profile, onefile;#ifdef RMOTHERSchar	rmothers;#endif RMOTHERSchar	*firstname, stdoutn[];#ifdef DEBUGchar	fulltrace, errtrace, testtrace, yyunique, typetest;#endifint	unit;/* * The flag nojunk means that header lines * of procedures and functions are to be suppressed * when the z option is off. * It is the default when command line z option * control is specified. * * The flag noinclude indicates that include statements are not * to be processed since we are pretty-printing the contents * of a single file. * * The flag bracket indicates that the source code should be * bracketed with lines of the form *	program x(output); * and *	begin end. * so that an include will pretty print without syntax errors. */char	nojunk, noinclude, bracket;/* * IMPORTANT NOTE * * Many of the following globals are shared by pi and pxp. * For more discussion of these see the available documentation * on the structure of pi. *//* * Each option has a stack of 17 option values, with opts giving * the current, top value, and optstk the value beneath it. * One refers to option `l' as, e.g., opt('l') in the text for clarity. */char	opts[26];int	optstk[26];#define opt(c) opts[c-'a']/* * NOTES ON THE DYNAMIC NATURE OF THE DATA STRUCTURES * * Pxp uses expandable tables for its string table * hash table, and parse tree space.  The following * definitions specify the size of the increments * for these items in fundamental units so that * each uses approximately 1024 bytes. */#define	STRINC	1024		/* string space increment */#define	TRINC	1024		/* tree space increment */#define	HASHINC	509		/* hash table size in words, each increment *//* * The initial sizes of the structures. * These should be large enough to profile * an "average" sized program so as to minimize * storage requests. * On a small system or and 11/34 or 11/40 * these numbers can be trimmed to make the * profiler smaller. */#define	ITREE	2000#define	IHASH	509/* * The following limits on hash and tree tables currently * allow approximately 1200 symbols and 20k words of tree * space.  The fundamental limit of 64k total data space * should be exceeded well before these are full. *//* * TABLE_MULTIPLIER is for uniformly increasing the sizes of the tables */#ifdef ADDR32#define TABLE_MULTIPLIER	8#endif ADDR32#ifdef ADDR16#define TABLE_MULTIPLIER	1#endif ADDR16#define	MAXHASH	(4 * TABLE_MULTIPLIER)#define	MAXTREE	(40 * TABLE_MULTIPLIER)/* * MAXDEPTH is the depth of the parse stack. * STACK_MULTIPLIER is for increasing its size. */#ifdef ADDR32#define	STACK_MULTIPLIER	8#endif ADDR32#ifdef ADDR16#define	STACK_MULTIPLIER	1#endif ADDR16#define	MAXDEPTH ( 150 * STACK_MULTIPLIER )/* * ERROR RELATED DEFINITIONS *//* * Exit statuses to pexit * * AOK * ERRS		Compilation errors inhibit obj productin * NOSTART	Errors before we ever got started * DIED		We ran out of memory or some such */#define	AOK	0#define	ERRS	1#define	NOSTART	2#define	DIED	3char	Recovery;/* * The flag eflg is set whenever we have a hard error. * The character in errpfx will precede the next error message. */int	eflg;char	errpfx;#define	setpfx(x)	errpfx = x#define	standard()	setpfx('s')#define	warning()	setpfx('w')#define	recovered()	setpfx('e')#define	quit()		setpfx('Q')#define	continuation()	setpfx(' ')/* * SEMANTIC DEFINITIONS */#define	NIL	0/* * NOCON and SAWCON are flags in the tree telling whether * a constant set is part of an expression. */#define	NOCON	0#define	SAWCON	1/* * The variable cbn gives the current block number. * The variable lastbn gives the block number before * it last changed and is used to know that we were * in a nested procedure so that we can print *	begin { solve } * when solve has nested procedures or functions in it. */int	cbn, lastbn;/* * The variable line is the current semantic * line and is set in stat.c from the numbers * embedded in statement type tree nodes. */int	line;/* * The size of the display * which defines the maximum nesting * of procedures and functions allowed. */#define	DSPLYSZ 20/* * Routines which need types * other than "integer" to be * assumed by the compiler. */struct tnode	*tree();char		*skipbl();int	*hash();char	*alloc();long	cntof();long	nowcnt();/* *	type cast nils to keep lint happy. */#define	TR_NIL	((struct tnode *) NIL)/* * Funny structures to use * pointers in wild and wooly ways */struct cstruct {	char	pchar;};struct {	int	pint;	int	pint2;};struct {	long	plong;};struct {	double	pdouble;};#define	OCT	1#define	HEX	2/* * MAIN PROGRAM GLOBALS, MISCELLANY *//* * Variables forming a data base referencing * the command line arguments with the "z" option. */char	**pflist;int	pflstc;int	pfcnt;char	*filename;		/* current source file name */char	*lastname;		/* last file name printed */long	tvec;			/* mod time of the source file */long	ptvec;			/* time profiled */char	printed;		/* current file has been printed */char	hadsome;		/* had some output *//* * PROFILING AND FORMATTING DEFINITIONS *//* * The basic counter information recording structure. * This is global only because people outside * the cluster in pmon.c need to know its size. */struct pxcnt {	long	ntimes;		/* the count this structure is all about */	int	counter;	/* a unique counter number for us */	int	gos;		/* global goto count when we hatched */	int	printed;	/* are we considered to have been printed? */} pfcnts[DSPLYSZ];/* * The pieces we divide the output line indents into: *	line#  PRFN  label:   STAT  999.---|  DECL   text */#define	STAT	0#define	DECL	1#define	PRFN	2/* * Gocnt records the total number of goto's and * cnts records the current counter for generating * COUNT operators. */int	gocnt;int	cnts;#include <stdio.h>#include <string.h>#include <sys/types.h>typedef enum {FALSE, TRUE} bool;#undef putchar

⌨️ 快捷键说明

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