src/Profile/pcxx_events.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 /***************************************************************************
00003  *
00004  * The IPPL Framework
00005  * 
00006  * This program was prepared by PSI. 
00007  * All rights in the program are reserved by PSI.
00008  * Neither PSI nor the author(s)
00009  * makes any warranty, express or implied, or assumes any liability or
00010  * responsibility for the use of this software
00011  *
00012  * Visit http://www.acl.lanl.gov/POOMS for more details
00013  *
00014  ***************************************************************************/
00015 
00016 /*********************************************************************/
00017 /*                  pC++/Sage++  Copyright (C) 1994                  */
00018 /*  Indiana University  University of Oregon  University of Rennes   */
00019 /*********************************************************************/
00020 
00021 /*
00022  *
00023  * pcxx_events.h: simple SW monitor routines
00024  *
00025  * (c) 1994 Jerry Manic Saftware
00026  *
00027  * Version 3.0
00028  */
00029 
00030 # ifndef __PCXX_EVENTS__H__
00031 # define __PCXX_EVENTS__H__
00032 
00033 #   include "pcxx_ansi.h"
00034 
00035 #if ( !defined(__ksr__) || defined(UNIPROC) || defined(__PCXX__) || \
00036       defined(_MASTER_SLAVE_) )
00037 #     define __private
00038 #   endif
00039 
00040     /* -- event classes ---------------------- */
00041     extern __private unsigned long int pcxx_ev_class;
00042 
00043 /* Ariadne debugger is currently supported on sgimp and mpi architectures.
00044    Extend this list as other architectures are added */
00045 #if ( defined(__MPI__) || defined(__SGIMP__) )
00046 #define ARIADNE_SUPPORT
00047 #endif
00048 
00049 #ifdef ARIADNE_SUPPORT
00050 extern int aa_poll_count; /* For Ariadne - defined in tulip/mpi/src/KernelCom.c */
00051 #endif /* ARIADNE_SUPPORT */
00052 
00053 #   ifdef TRACING_ON
00054 
00055 #     ifdef PCXX_EVENT_SRC
00056 #       include "pcxx_machines.h"
00057 
00058         /* -- pcxx tracer events ------------------- */
00059 #       define PCXX_EV_INIT         60000
00060 #       define PCXX_EV_FLUSH_ENTER  60001
00061 #       define PCXX_EV_FLUSH_EXIT   60002
00062 #       define PCXX_EV_CLOSE        60003
00063 #       define PCXX_EV_INITM        60004
00064 #       define PCXX_EV_WALL_CLOCK   60005
00065 #       define PCXX_EV_CONT_EVENT   60006
00066 #       define TAU_MESSAGE_SEND     60007
00067 #       define TAU_MESSAGE_RECV     60008
00068 
00069         /* -- the following two events are only the ----- */
00070         /* -- base numbers, actually both represent ----- */
00071         /* -- 64 events (60[1234]00 to 60[1234]64)  ----- */
00072 #       define PCXX_WTIMER_CLEAR    60199
00073 #       define PCXX_WTIMER_START    60100
00074 #       define PCXX_WTIMER_STOP     60200
00075 #       define PCXX_UTIMER_CLEAR    60399
00076 #       define PCXX_UTIMER_START    60300
00077 #       define PCXX_UTIMER_STOP     60400
00078 
00079         
00080 
00081 #       ifndef PCXX_BUFSIZE
00082 #         define PCXX_BUFSIZE 65536  /* -- 64 K -- */
00083 #       endif
00084 
00085         /* -- event classes ----------------------------- */
00086 #       ifndef PCXX_EC_NULL
00087 #         define PCXX_EC_NULL       0x00000000
00088 
00089 #         define PCXX_EC_TRACER     0x00000001
00090 #         define PCXX_EC_TIMER      0x00000002
00091 
00092 #         define PCXX_EC_ALL        0xFFFFFFFF
00093 #       endif
00094 
00095 #     endif /* PCXX_EVENT_SRC */
00096 
00097 #     ifdef __cplusplus
00098         extern "C" {
00099 #     endif /* __cplusplus */
00100 
00101 #     ifdef PCXX_EVENT_SRC
00102 
00103         /* -- event record buffer descriptor ------------------------- */
00104         typedef struct
00105         {
00106           long int           ev;    /* -- event id        -- */
00107           short unsigned int nid;   /* -- node id         -- */
00108           short unsigned int tid;   /* -- thread id       -- */
00109           long int           par;   /* -- event parameter -- */
00110           unsigned long int  ti;    /* -- time [us]?      -- */
00111         } PCXX_EV;
00112 
00113         /* -- pointer to next free element of event record buffer ---- */
00114         extern __private PCXX_EV *pcxx_ev_ptr;
00115 
00116         /* -- pointer to last available element of event record buffer */
00117         extern __private PCXX_EV *pcxx_ev_max;
00118 
00119 #     endif /* PCXX_EVENT_SRC */
00120 
00121       /* -- pcxx monitor routines ------------------------------------ */
00122 #     define PCXX_EVENT(c,e,p) \
00123              if (pcxx_ev_class&(c)) pcxx_Event(e,p)
00124 #     define PCXX_LONG_EVENT(c,e,l,p) \
00125              if (pcxx_ev_class&(c)) pcxx_LongEvent(e,l,p)
00126 #     ifdef __cplusplus
00127         void pcxx_EvInit (char *n);
00128         void pcxx_Event (long int e, long int p);
00129         void pcxx_LongEvent (long int e, int l, char *p);
00130         void pcxx_EvClose ();
00131         void pcxx_EvFlush ();
00132         }
00133 #     else
00134         extern void pcxx_EvInit(char *n);
00135         extern void pcxx_Event(long int e, long int p);
00136         extern void pcxx_LongEvent(long int e, int l, char *p);
00137         extern void pcxx_EvClose ();
00138         extern void pcxx_EvFlush ();
00139 #     endif /* __cplusplus */
00140 
00141 #   else
00142 
00143 #     define PCXX_EVENT(c, e, p)
00144 #     define PCXX_LONG_EVENT(c, e, l, p)
00145 #     define pcxx_EvInit(n)
00146 #     define pcxx_Event(e, p)
00147 #     define pcxx_LongEvent(e, l, p)
00148 #     define pcxx_EvClose()
00149 #     define pcxx_EvFlush()
00150 #     define pcxx_AriadneTrace(ec, ev, pid, oid, rwtype, mtag, par) 
00151 
00152 #   endif /* TRACING_ON */
00153 
00154 #   ifdef TRACING_ON   /* for Ariadne */
00155 #     ifdef ARIADNE_SUPPORT
00156 #       ifdef __cplusplus
00157 extern "C" void pcxx_AriadneTrace (long int event_class, long int event, int pid, int oid, int rwtype, int mtag, int parameter); 
00158 #       else    /* __cplusplus */
00159         extern void pcxx_AriadneTrace (long int event_class, long int event, int pid, int oid, int rwtype, int mtag, int parameter); 
00160 #       endif   /* __cplusplus */
00161 #     else  /* Ariadne is not supported */
00162 #     define pcxx_AriadneTrace(ec, ev, pid, oid, rwtype, mtag, par) 
00163 /* define it as blank  - like its done above when tracing is not on */
00164 #     endif /* ARIADNE_SUPPORT */
00165 #   endif   /* TRACING_ON */
00166 
00167 
00168 
00169 
00170 # endif /* !__PCXX_EVENTS_H__ */
00171 
00172 /***************************************************************************
00173  * $RCSfile: addheaderfooter,v $   $Author: adelmann $
00174  * $Revision: 1.1.1.1 $   $Date: 2003/01/23 07:40:17 $
00175  * IPPL_VERSION_ID: $Id: addheaderfooter,v 1.1.1.1 2003/01/23 07:40:17 adelmann Exp $ 
00176  ***************************************************************************/
00177 

Generated on Mon Jan 16 13:23:54 2006 for IPPL by  doxygen 1.4.6