BSD 4_3_Net_2 release
[unix-history] / usr / src / usr.bin / gprof / gprof.h
index fe1a545..e34d570 100644 (file)
@@ -1,11 +1,60 @@
-    /* sccsid:  @(#)gprof.h    1.13 (Berkeley) %G% */
+/*
+ * Copyright (c) 1983 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.
+ *
+ *     @(#)gprof.h     5.10 (Berkeley) 4/24/91
+ */
 
 
-#include <stdio.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <a.out.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <a.out.h>
-#include <pagsiz.h>
-#include "gcrt0.h"
+#include <stdio.h>
+#include "gmon.h"
+
+#if vax
+#   include "vax.h"
+#endif
+#if sun
+#   include "sun.h"
+#endif
+#if tahoe
+#   include "tahoe.h"
+#endif
+#if hp300
+#   include "hp300.h"
+#endif
+#if i386
+#   include "i386.h"
+#endif
+
 
     /*
      * who am i, for error messages.
 
     /*
      * who am i, for error messages.
@@ -19,29 +68,18 @@ typedef int bool;
 #define        FALSE   0
 #define        TRUE    1
 
 #define        FALSE   0
 #define        TRUE    1
 
-    /*
-     * opcode of the `calls' instruction
-     */
-#define        CALLS   0xfb
-
     /*
      * ticks per second
      */
     /*
      * ticks per second
      */
-#define        HZ      60
+long   hz;
 
 
-typedef        short UNIT;             /* unit of profiling */
+typedef        u_short UNIT;           /* unit of profiling */
 char   *a_outname;
 #define        A_OUTNAME               "a.out"
 
 char   *gmonname;
 #define        GMONNAME                "gmon.out"
 #define        GMONSUM                 "gmon.sum"
 char   *a_outname;
 #define        A_OUTNAME               "a.out"
 
 char   *gmonname;
 #define        GMONNAME                "gmon.out"
 #define        GMONSUM                 "gmon.sum"
-       
-    /*
-     * the directory where the descriptions of the fields
-     * of the profiles are kept.
-     */
-#define        BLURBLIB                "/usr/lib/"
 
     /*
      * a constructed arc,
 
     /*
      * a constructed arc,
@@ -69,6 +107,7 @@ typedef struct arcstruct     arctype;
 struct nl {
     char               *name;          /* the name */
     unsigned long      value;          /* the pc entry point */
 struct nl {
     char               *name;          /* the name */
     unsigned long      value;          /* the pc entry point */
+    unsigned long      svalue;         /* entry point aligned to histograms */
     double             time;           /* ticks in this routine */
     double             childtime;      /* cumulative ticks in children */
     long               ncall;          /* how many times called */
     double             time;           /* ticks in this routine */
     double             childtime;      /* cumulative ticks in children */
     long               ncall;          /* how many times called */
@@ -93,8 +132,10 @@ int nname;                  /* the number of function names */
 
     /*
      * flag which marks a nl entry as topologically ``busy''
 
     /*
      * flag which marks a nl entry as topologically ``busy''
+     * flag which marks a nl entry as topologically ``not_numbered''
      */
 #define        DFN_BUSY        -1
      */
 #define        DFN_BUSY        -1
+#define        DFN_NAN         0
 
     /* 
      * namelist entries for cycle headers.
 
     /* 
      * namelist entries for cycle headers.
@@ -125,7 +166,7 @@ int debug;
      * Each discretized pc sample has
      * a count of the number of samples in its range
      */
      * Each discretized pc sample has
      * a count of the number of samples in its range
      */
-unsigned UNIT  *samples;
+UNIT   *samples;
 
 unsigned long  s_lowpc;        /* lowpc from the profile file */
 unsigned long  s_highpc;       /* highpc from the profile file */
 
 unsigned long  s_lowpc;        /* lowpc from the profile file */
 unsigned long  s_highpc;       /* highpc from the profile file */
@@ -153,6 +194,7 @@ bool        eflag;                          /* specific functions excluded */
 bool   Eflag;                          /* functions excluded with time */
 bool   fflag;                          /* specific functions requested */
 bool   Fflag;                          /* functions requested with time */
 bool   Eflag;                          /* functions excluded with time */
 bool   fflag;                          /* specific functions requested */
 bool   Fflag;                          /* functions requested with time */
+bool   kflag;                          /* arcs to be deleted */
 bool   sflag;                          /* sum multiple gmon.out files */
 bool   zflag;                          /* zero time/called functions, too */
 
 bool   sflag;                          /* sum multiple gmon.out files */
 bool   zflag;                          /* zero time/called functions, too */
 
@@ -167,47 +209,42 @@ struct stringlist *elist;
 struct stringlist      *Elist;
 struct stringlist      *flist;
 struct stringlist      *Flist;
 struct stringlist      *Elist;
 struct stringlist      *flist;
 struct stringlist      *Flist;
-
-    /*
-     * register for pc relative addressing
-     */
-#define        PC      0xf
-
-enum opermodes {
-    literal, indexed, reg, regdef, autodec, autoinc, autoincdef, 
-    bytedisp, bytedispdef, worddisp, worddispdef, longdisp, longdispdef,
-    immediate, absolute, byterel, bytereldef, wordrel, wordreldef,
-    longrel, longreldef
-};
-typedef enum opermodes operandenum;
-
-struct modebyte {
-    unsigned int       regfield:4;
-    unsigned int       modefield:4;
-};
+struct stringlist      *kfromlist;
+struct stringlist      *ktolist;
 
     /*
      * function declarations
      */
 
     /*
      * function declarations
      */
+/*
                addarc();
                addarc();
+*/
 int            arccmp();
 arctype                *arclookup();
 int            arccmp();
 arctype                *arclookup();
+/*
                asgnsamples();
                printblurb();
                cyclelink();
                dfn();
                asgnsamples();
                printblurb();
                cyclelink();
                dfn();
+*/
 bool           dfn_busy();
 bool           dfn_busy();
+/*
                dfn_findcycle();
                dfn_findcycle();
+*/
 bool           dfn_numbered();
 bool           dfn_numbered();
+/*
                dfn_post_visit();
                dfn_pre_visit();
                dfn_self_cycle();
                dfn_post_visit();
                dfn_pre_visit();
                dfn_self_cycle();
-               doarcs();
+*/
+nltype         **doarcs();
+/*
                done();
                findcalls();
                flatprofheader();
                flatprofline();
                done();
                findcalls();
                flatprofheader();
                flatprofline();
+*/
 bool           funcsymbol();
 bool           funcsymbol();
+/*
                getnfile();
                getpfile();
                getstrtab();
                getnfile();
                getpfile();
                getstrtab();
@@ -216,6 +253,7 @@ bool                funcsymbol();
                gprofheader();
                gprofline();
                main();
                gprofheader();
                gprofline();
                main();
+*/
 unsigned long  max();
 int            membercmp();
 unsigned long  min();
 unsigned long  max();
 int            membercmp();
 unsigned long  min();
@@ -224,6 +262,7 @@ FILE                *openpfile();
 long           operandlength();
 operandenum    operandmode();
 char           *operandname();
 long           operandlength();
 operandenum    operandmode();
 char           *operandname();
+/*
                printchildren();
                printcycle();
                printgprof();
                printchildren();
                printcycle();
                printgprof();
@@ -232,15 +271,20 @@ char              *operandname();
                printparents();
                printprof();
                readsamples();
                printparents();
                printprof();
                readsamples();
+*/
 unsigned long  reladdr();
 unsigned long  reladdr();
+/*
                sortchildren();
                sortmembers();
                sortparents();
                tally();
                timecmp();
                topcmp();
                sortchildren();
                sortmembers();
                sortparents();
                tally();
                timecmp();
                topcmp();
+*/
 int            totalcmp();
 int            totalcmp();
+/*
                valcmp();
                valcmp();
+*/
 
 #define        LESSTHAN        -1
 #define        EQUALTO         0
 
 #define        LESSTHAN        -1
 #define        EQUALTO         0
@@ -253,7 +297,7 @@ int         totalcmp();
 #define        TIMEDEBUG       16
 #define        SAMPLEDEBUG     32
 #define        AOUTDEBUG       64
 #define        TIMEDEBUG       16
 #define        SAMPLEDEBUG     32
 #define        AOUTDEBUG       64
-#define        CALLSDEBUG      128
+#define        CALLDEBUG       128
 #define        LOOKUPDEBUG     256
 #define        PROPDEBUG       512
 #define        ANYDEBUG        1024
 #define        LOOKUPDEBUG     256
 #define        PROPDEBUG       512
 #define        ANYDEBUG        1024