xref: /petsc/include/petsclog.h (revision 614700ed61def087da884e32fc06b2fd5b4d189e)
1*614700edSBarry Smith /* $Id: plog.h,v 1.70 1996/04/17 02:47:05 curfman Exp bsmith $ */
297bb86f7SLois Curfman McInnes 
397bb86f7SLois Curfman McInnes /*
44c1da538SLois Curfman McInnes     Defines high level logging in PETSc.
597bb86f7SLois Curfman McInnes */
697bb86f7SLois Curfman McInnes 
797bb86f7SLois Curfman McInnes #if !defined(__PLOG_PACKAGE)
897bb86f7SLois Curfman McInnes #define __PLOG_PACKAGE
997bb86f7SLois Curfman McInnes #include "petsc.h"
1097bb86f7SLois Curfman McInnes 
1197bb86f7SLois Curfman McInnes /*
12c43cb918SSatish Balay   If you add an event here, make sure you add to petsc/bin/petscview.cfg,
1355206aebSLois Curfman McInnes   petsc/bin/petscview, petsc/src/plog/src/plog.c, and
1455206aebSLois Curfman McInnes   petsc/src/plog/src/plogmpe.c!!!
1597bb86f7SLois Curfman McInnes */
1697bb86f7SLois Curfman McInnes #define MAT_Mult                                0
171ff317f7SLois Curfman McInnes #define MAT_MatrixFreeMult                      1
181ff317f7SLois Curfman McInnes #define MAT_AssemblyBegin                       2
191ff317f7SLois Curfman McInnes #define MAT_AssemblyEnd                         3
201ff317f7SLois Curfman McInnes #define MAT_GetReordering                       4
211ff317f7SLois Curfman McInnes #define MAT_MultTrans                           5
221ff317f7SLois Curfman McInnes #define MAT_MultAdd                             6
231ff317f7SLois Curfman McInnes #define MAT_MultTransAdd                        7
241ff317f7SLois Curfman McInnes #define MAT_LUFactor                            8
251ff317f7SLois Curfman McInnes #define MAT_CholeskyFactor                      9
261ff317f7SLois Curfman McInnes #define MAT_LUFactorSymbolic                    10
271ff317f7SLois Curfman McInnes #define MAT_ILUFactorSymbolic                   11
281ff317f7SLois Curfman McInnes #define MAT_CholeskyFactorSymbolic              12
291ff317f7SLois Curfman McInnes #define MAT_IncompleteCholeskyFactorSymbolic    13
301ff317f7SLois Curfman McInnes #define MAT_LUFactorNumeric                     14
311ff317f7SLois Curfman McInnes #define MAT_CholeskyFactorNumeric               15
321ff317f7SLois Curfman McInnes #define MAT_Relax                               16
331ff317f7SLois Curfman McInnes #define MAT_Copy                                17
341ff317f7SLois Curfman McInnes #define MAT_Convert                             18
351ff317f7SLois Curfman McInnes #define MAT_Scale                               19
361ff317f7SLois Curfman McInnes #define MAT_ZeroEntries                         20
371ff317f7SLois Curfman McInnes #define MAT_Solve                               21
381ff317f7SLois Curfman McInnes #define MAT_SolveAdd                            22
391ff317f7SLois Curfman McInnes #define MAT_SolveTrans                          23
401ff317f7SLois Curfman McInnes #define MAT_SolveTransAdd                       24
411ff317f7SLois Curfman McInnes #define MAT_SetValues                           25
421ff317f7SLois Curfman McInnes #define MAT_ForwardSolve                        26
431ff317f7SLois Curfman McInnes #define MAT_BackwardSolve                       27
441ff317f7SLois Curfman McInnes #define MAT_Load                                28
451ff317f7SLois Curfman McInnes #define MAT_View                                29
461ff317f7SLois Curfman McInnes #define MAT_ILUFactor                           30
471ff317f7SLois Curfman McInnes #define MAT_GetSubMatrix                        31
481ff317f7SLois Curfman McInnes #define MAT_GetSubMatrices                      32
491ff317f7SLois Curfman McInnes #define MAT_GetValues                           33
501ff317f7SLois Curfman McInnes #define MAT_IncreaseOverlap                     34
51dd8bebb4SSatish Balay #define MAT_GetRow                              35
5297bb86f7SLois Curfman McInnes 
534dcbc457SBarry Smith #define VEC_Dot                                 40
544dcbc457SBarry Smith #define VEC_Norm                                41
554dcbc457SBarry Smith #define VEC_Max                                 42
564dcbc457SBarry Smith #define VEC_Min                                 43
574dcbc457SBarry Smith #define VEC_TDot                                44
584dcbc457SBarry Smith #define VEC_Scale                               45
594dcbc457SBarry Smith #define VEC_Copy                                46
604dcbc457SBarry Smith #define VEC_Set                                 47
614dcbc457SBarry Smith #define VEC_AXPY                                48
624dcbc457SBarry Smith #define VEC_AYPX                                49
634dcbc457SBarry Smith #define VEC_Swap                                50
644dcbc457SBarry Smith #define VEC_WAXPY                               51
654dcbc457SBarry Smith #define VEC_AssemblyBegin                       52
664dcbc457SBarry Smith #define VEC_AssemblyEnd                         53
674dcbc457SBarry Smith #define VEC_MTDot                               54
684dcbc457SBarry Smith #define VEC_MDot                                55
694dcbc457SBarry Smith #define VEC_MAXPY                               56
704dcbc457SBarry Smith #define VEC_PMult                               57
714dcbc457SBarry Smith #define VEC_SetValues                           58
724dcbc457SBarry Smith #define VEC_Load                                59
734dcbc457SBarry Smith #define VEC_View                                60
744dcbc457SBarry Smith #define VEC_ScatterBegin                        61
754dcbc457SBarry Smith #define VEC_ScatterEnd                          62
76bf5bf444SLois Curfman McInnes #define VEC_SetRandom                           63
7797bb86f7SLois Curfman McInnes 
784dcbc457SBarry Smith #define SLES_Solve                              70
794dcbc457SBarry Smith #define SLES_SetUp                              71
8097bb86f7SLois Curfman McInnes 
814dcbc457SBarry Smith #define KSP_GMRESOrthogonalization              72
8297bb86f7SLois Curfman McInnes 
834dcbc457SBarry Smith #define PC_SetUp                                75
8436058207SBarry Smith #define PC_SetUpOnBlocks                        76
8532284f49SSatish Balay #define PC_Apply                                77
86*614700edSBarry Smith #define PC_ApplySymmetricLeft                   78
87*614700edSBarry Smith #define PC_ApplySymmetricRight                  79
884dcbc457SBarry Smith 
894dcbc457SBarry Smith #define SNES_Solve                              80
904dcbc457SBarry Smith #define SNES_LineSearch                         81
914dcbc457SBarry Smith #define SNES_FunctionEval                       82
924dcbc457SBarry Smith #define SNES_JacobianEval                       83
934dcbc457SBarry Smith #define SNES_MinimizationFunctionEval           84
944dcbc457SBarry Smith #define SNES_GradientEval                       85
954dcbc457SBarry Smith #define SNES_HessianEval                        86
964dcbc457SBarry Smith 
97682d7d0cSBarry Smith #define TS_Step                                 90
9872936c9dSBarry Smith 
9972936c9dSBarry Smith #define Petsc_Barrier                           100
10055206aebSLois Curfman McInnes 
10155206aebSLois Curfman McInnes #define DFVec_RefineVector                      110
10255206aebSLois Curfman McInnes #define DFVec_AssembleFullVector                111
10355206aebSLois Curfman McInnes #define DFVec_GetComponentVectors               112
10455206aebSLois Curfman McInnes #define DFVec_DrawContours                      113
10555206aebSLois Curfman McInnes 
10641debaddSBarry Smith /*
107b3b1b5bfSLois Curfman McInnes    Event numbers PLOG_USER_EVENT_LOW to PLOG_USER_EVENT_HIGH are reserved
10877c4ece6SBarry Smith    for applications.  Make sure that src/plog/src/plog.c defines enough
109b3b1b5bfSLois Curfman McInnes    entries in (*name)[] to go up to PLOG_USER_EVENT_HIGH.
11041debaddSBarry Smith */
11135aab85fSBarry Smith #define PLOG_USER_EVENT_LOW_STATIC              120
1124dcbc457SBarry Smith #define PLOG_USER_EVENT_HIGH                    200
11397bb86f7SLois Curfman McInnes 
11419b02663SBarry Smith /* Global flop counter */
11519b02663SBarry Smith extern double _TotalFlops;
11619b02663SBarry Smith 
117edde42fcSLois Curfman McInnes /* General logging of information; different from event logging */
11894a424c1SBarry Smith extern int PLogInfo(void*,char*,...);
119*614700edSBarry Smith extern int PLogInfoDeActivateClass(int);
120*614700edSBarry Smith extern int PLogInfoActivateClass(int);
121*614700edSBarry Smith 
122*614700edSBarry Smith #if defined(PETSC_LOG)  /* --------------------------------------------*/
123*614700edSBarry Smith 
124*614700edSBarry Smith #define PLogFlops(n) {_TotalFlops += n;}
12577c4ece6SBarry Smith 
12677c4ece6SBarry Smith #if defined (HAVE_MPE)
12777c4ece6SBarry Smith #include "mpe.h"
128*614700edSBarry Smith #define MPEBEGIN    1000
12977c4ece6SBarry Smith extern int PLogMPEBegin();
13077c4ece6SBarry Smith extern int PLogMPEDump(char *);
131*614700edSBarry Smith extern int UseMPE,PLogEventMPEFlags[];
132*614700edSBarry Smith extern int PLogEventMPEActivate(int);
133*614700edSBarry Smith extern int PLogEventMPEDeActivate(int);
134*614700edSBarry Smith #else
135*614700edSBarry Smith #define PLogEventMPEActivate(a)
136*614700edSBarry Smith #define PLogEventMPEDeActivate(a)
13777c4ece6SBarry Smith #endif
13877c4ece6SBarry Smith 
139*614700edSBarry Smith extern int PLogEventActivate(int);
140*614700edSBarry Smith extern int PLogEventDeActivate(int);
141*614700edSBarry Smith 
142*614700edSBarry Smith extern int PLogEventActivateClass();
143*614700edSBarry Smith extern int PLogEventDeActivateClass();
144*614700edSBarry Smith 
145*614700edSBarry Smith extern int PLogEventFlags[];
14677c4ece6SBarry Smith extern int (*_PLB)(int,int,PetscObject,PetscObject,PetscObject,PetscObject);
14777c4ece6SBarry Smith extern int (*_PLE)(int,int,PetscObject,PetscObject,PetscObject,PetscObject);
14877c4ece6SBarry Smith extern int (*_PHC)(PetscObject);
14977c4ece6SBarry Smith extern int (*_PHD)(PetscObject);
15077c4ece6SBarry Smith 
15177c4ece6SBarry Smith #if defined(HAVE_MPE)
15277c4ece6SBarry Smith #define PLogEventBegin(e,o1,o2,o3,o4) {static int _tacky = 0; \
15377c4ece6SBarry Smith   { _tacky++; \
154*614700edSBarry Smith    if (_PLB && PLogEventFlags[e]) \
15577c4ece6SBarry Smith      (*_PLB)(e,_tacky,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\
156*614700edSBarry Smith    if (_tacky == 1 && UseMPE && PLogEventMPEFlags[e])\
15777c4ece6SBarry Smith      MPE_Log_event(MPEBEGIN+2*e,0,"");\
15877c4ece6SBarry Smith   }
15977c4ece6SBarry Smith #else
16077c4ece6SBarry Smith #define PLogEventBegin(e,o1,o2,o3,o4) {static int _tacky = 0; \
16177c4ece6SBarry Smith   { _tacky++; \
162*614700edSBarry Smith    if (_PLB && PLogEventFlags[e]) \
16377c4ece6SBarry Smith      (*_PLB)(e,_tacky,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\
16477c4ece6SBarry Smith   }
16577c4ece6SBarry Smith #endif
16677c4ece6SBarry Smith 
16777c4ece6SBarry Smith #if defined(HAVE_MPE)
16877c4ece6SBarry Smith #define PLogEventEnd(e,o1,o2,o3,o4) {\
169*614700edSBarry Smith   if (_PLE && PLogEventFlags[e]) \
17077c4ece6SBarry Smith     (*_PLE)(e,_tacky,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\
171*614700edSBarry Smith   if (_tacky == 1 && UseMPE && PLogEventMPEFlags[e])\
17277c4ece6SBarry Smith      MPE_Log_event(MPEBEGIN+2*e+1,0,"");\
17377c4ece6SBarry Smith   }  _tacky--;}
17477c4ece6SBarry Smith #else
17577c4ece6SBarry Smith #define PLogEventEnd(e,o1,o2,o3,o4) {\
176*614700edSBarry Smith   if (_PLE && PLogEventFlags[e]) \
17777c4ece6SBarry Smith     (*_PLE)(e,_tacky,(PetscObject)(o1),(PetscObject)(o2),(PetscObject)(o3),(PetscObject)(o4));\
17877c4ece6SBarry Smith   } _tacky--;}
17977c4ece6SBarry Smith #endif
18077c4ece6SBarry Smith 
18177c4ece6SBarry Smith 
18277c4ece6SBarry Smith #define PLogObjectParent(p,c)       {PetscValidHeader((PetscObject)c); \
18377c4ece6SBarry Smith                                      PetscValidHeader((PetscObject)p);\
18477c4ece6SBarry Smith                                      ((PetscObject)(c))->parent = (PetscObject) p;}
18577c4ece6SBarry Smith #define PLogObjectParents(p,n,d)    {int _i; for ( _i=0; _i<n; _i++ ) \
18677c4ece6SBarry Smith                                     PLogObjectParent(p,(d)[_i]);}
18777c4ece6SBarry Smith #define PLogObjectCreate(h)         {if (_PHC) (*_PHC)((PetscObject)h);}
18877c4ece6SBarry Smith #define PLogObjectDestroy(h)        {if (_PHD) (*_PHD)((PetscObject)h);}
18977c4ece6SBarry Smith #define PLogObjectMemory(p,m)       {PetscValidHeader((PetscObject)p);\
19077c4ece6SBarry Smith                                     ((PetscObject)(p))->mem += (m);}
19177c4ece6SBarry Smith extern int PLogObjectState(PetscObject,char *,...);
19277c4ece6SBarry Smith extern int PLogDestroy();
19377c4ece6SBarry Smith extern int PLogStagePush(int);
19477c4ece6SBarry Smith extern int PLogStagePop();
19577c4ece6SBarry Smith extern int PLogStageRegister(int,char*);
196edde42fcSLois Curfman McInnes extern int PLogPrintSummary(MPI_Comm,FILE *);
197edde42fcSLois Curfman McInnes extern int PLogBegin();
198edde42fcSLois Curfman McInnes extern int PLogAllBegin();
199edde42fcSLois Curfman McInnes extern int PLogDump(char*);
200edde42fcSLois Curfman McInnes extern int PLogEventRegister(int*,char*,char*);
20177c4ece6SBarry Smith 
202*614700edSBarry Smith 
203*614700edSBarry Smith #else  /* ------------------------------------------------------------*/
204*614700edSBarry Smith 
205*614700edSBarry Smith #define PLogFlops(n)
206*614700edSBarry Smith 
207*614700edSBarry Smith #if defined (HAVE_MPE)
208*614700edSBarry Smith #define MPEBEGIN    1000
209*614700edSBarry Smith extern int PLogMPEBegin();
210*614700edSBarry Smith extern int PLogMPEDump(char *);
21177c4ece6SBarry Smith #else
212*614700edSBarry Smith #define PLogEventMPEActivate(a)
213*614700edSBarry Smith #define PLogEventMPEDeActivate(a)
214*614700edSBarry Smith #endif
215*614700edSBarry Smith 
216*614700edSBarry Smith #define PLogEventActivate(a)
217*614700edSBarry Smith #define PLogEventDeActivate(a)
218*614700edSBarry Smith 
219*614700edSBarry Smith #define PLogEventActivateClass()
220*614700edSBarry Smith #define PLogEventDeActivateClass()
22177c4ece6SBarry Smith 
2227f8359c1SLois Curfman McInnes #define _PLB                          0
2237f8359c1SLois Curfman McInnes #define _PLE                          0
2247f8359c1SLois Curfman McInnes #define _PHC                          0
2257f8359c1SLois Curfman McInnes #define _PHD                          0
226d7a720efSLois Curfman McInnes #define PLogEventBegin(e,o1,o2,o3,o4)
227d7a720efSLois Curfman McInnes #define PLogEventEnd(e,o1,o2,o3,o4)
228d7a720efSLois Curfman McInnes #define PLogObjectParent(p,c)
229d7a720efSLois Curfman McInnes #define PLogObjectParents(p,n,c)
230d7a720efSLois Curfman McInnes #define PLogObjectCreate(h)
231d7a720efSLois Curfman McInnes #define PLogObjectDestroy(h)
232d7a720efSLois Curfman McInnes #define PLogObjectMemory(p,m)
233d7a720efSLois Curfman McInnes #define PLogDestroy()
234d7a720efSLois Curfman McInnes #define PLogStagePush(int)
235d7a720efSLois Curfman McInnes #define PLogStagePop()
236d7a720efSLois Curfman McInnes #define PLogStageRegister(a,b)
237d7a720efSLois Curfman McInnes #define PLogPrintSummary(comm,file)
238d7a720efSLois Curfman McInnes #define PLogBegin()
239d7a720efSLois Curfman McInnes #define PLogAllBegin()
240d7a720efSLois Curfman McInnes #define PLogDump(char)
241d7a720efSLois Curfman McInnes #define PLogEventRegister(a,b,c)
242d7a720efSLois Curfman McInnes #define PLogMPEBegin()
243d7a720efSLois Curfman McInnes #define PLogMPEDump(a)
2447f8359c1SLois Curfman McInnes extern int PLogObjectState(PetscObject,char *,...);
245edde42fcSLois Curfman McInnes 
24677c4ece6SBarry Smith #endif
2476daaf66cSBarry Smith 
2488b6d568bSLois Curfman McInnes /*MC
24919b02663SBarry Smith    PLogFlops - Adds floating point operations to the global counter.
25019b02663SBarry Smith 
25119b02663SBarry Smith    Input Parameter:
25219b02663SBarry Smith .  f - flop counter
25319b02663SBarry Smith 
25419b02663SBarry Smith    Synopsis:
255682ac3c9SWilliam Gropp    void PLogFlops(int f)
25619b02663SBarry Smith 
25719b02663SBarry Smith    Notes:
25819b02663SBarry Smith    A global counter logs all PETSc flop counts.  The user can use
25919b02663SBarry Smith    PLogFlops() to increment this counter to include flops for the
26019b02663SBarry Smith    application code.
26119b02663SBarry Smith 
26219b02663SBarry Smith    PETSc automatically logs library events if the code has been
26319b02663SBarry Smith    compiled with -DPETSC_LOG (which is the default), and -log,
26419b02663SBarry Smith    -log_summary, or -log_all are specified.  PLogFlops() is
26519b02663SBarry Smith    intended for logging user flops to supplement this PETSc
26619b02663SBarry Smith    information.
26719b02663SBarry Smith 
26819b02663SBarry Smith     Example of Usage:
26935aab85fSBarry Smith $     int USER_EVENT;
270b045bd31SSatish Balay $     PLogEventRegister(&USER_EVENT,"User event","Color:");
27119b02663SBarry Smith $     PLogEventBegin(USER_EVENT,0,0,0,0);
27219b02663SBarry Smith $        [code segment to monitor]
27319b02663SBarry Smith $        PLogFlops(user_flops)
27419b02663SBarry Smith $     PLogEventEnd(USER_EVENT,0,0,0,0);
27519b02663SBarry Smith 
27658cd8a20SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventBegin(), PLogEventEnd(), PetscGetFlops()
27719b02663SBarry Smith 
278edde42fcSLois Curfman McInnes .keywords: log, flops, floating point operations
27919b02663SBarry Smith M*/
28019b02663SBarry Smith 
28197bb86f7SLois Curfman McInnes 
282d7a720efSLois Curfman McInnes /*MC
28319b02663SBarry Smith    PLogEventBegin - Logs the beginning of a user event.
28497bb86f7SLois Curfman McInnes 
28597bb86f7SLois Curfman McInnes    Input Parameters:
28635aab85fSBarry Smith .  e - integer associated with the event obtained from PLogEventRegister()
28797bb86f7SLois Curfman McInnes .  o1,o2,o3,o4 - objects associated with the event, or 0
28897bb86f7SLois Curfman McInnes 
28997bb86f7SLois Curfman McInnes    Synopsis:
290682ac3c9SWilliam Gropp    void PLogEventBegin(int e,PetscObject o1,PetscObject o2,PetscObject o3,
29197bb86f7SLois Curfman McInnes                   PetscObject o4)
29297bb86f7SLois Curfman McInnes 
29397bb86f7SLois Curfman McInnes    Notes:
29497bb86f7SLois Curfman McInnes    You should also register each integer event with the command
29597bb86f7SLois Curfman McInnes    PLogRegisterEvent().  The source code must be compiled with
29697bb86f7SLois Curfman McInnes    -DPETSC_LOG, which is the default.
29797bb86f7SLois Curfman McInnes 
29897bb86f7SLois Curfman McInnes    PETSc automatically logs library events if the code has been
29997bb86f7SLois Curfman McInnes    compiled with -DPETSC_LOG, and -log, -log_summary, or -log_all are
30097bb86f7SLois Curfman McInnes    specified.  PLogEventBegin() is intended for logging user events
30197bb86f7SLois Curfman McInnes    to supplement this PETSc information.
30297bb86f7SLois Curfman McInnes 
30397bb86f7SLois Curfman McInnes     Example of Usage:
30435aab85fSBarry Smith $     int USER_EVENT;
3050eb211faSLois Curfman McInnes $     int user_event_flops;
306b045bd31SSatish Balay $     PLogEventRegister(&USER_EVENT,"User event","Color:");
30735aab85fSBarry Smith $     PLogEventBegin(&USER_EVENT,0,0,0,0);
30897bb86f7SLois Curfman McInnes $        [code segment to monitor]
3090eb211faSLois Curfman McInnes $        PLogFlops(user_event_flops);
31035aab85fSBarry Smith $     PLogEventEnd(&USER_EVENT,0,0,0,0);
31197bb86f7SLois Curfman McInnes 
31297bb86f7SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventEnd(), PLogFlops()
31397bb86f7SLois Curfman McInnes 
31497bb86f7SLois Curfman McInnes .keywords: log, event, begin
31597bb86f7SLois Curfman McInnes M*/
31697bb86f7SLois Curfman McInnes 
317d7a720efSLois Curfman McInnes /*MC
31819b02663SBarry Smith    PLogEventEnd - Log the end of a user event.
31997bb86f7SLois Curfman McInnes 
32097bb86f7SLois Curfman McInnes    Input Parameters:
32135aab85fSBarry Smith .  e - integer associated with the event obtained with PLogEventRegister()
32297bb86f7SLois Curfman McInnes .  o1,o2,o3,o4 - objects associated with the event, or 0
32397bb86f7SLois Curfman McInnes 
32497bb86f7SLois Curfman McInnes    Synopsis:
325682ac3c9SWilliam Gropp    void PLogEventEnd(int e,PetscObject o1,PetscObject o2,PetscObject o3,
32697bb86f7SLois Curfman McInnes                 PetscObject o4)
32797bb86f7SLois Curfman McInnes 
32897bb86f7SLois Curfman McInnes    Notes:
32997bb86f7SLois Curfman McInnes    You should also register each integer event with the command
33097bb86f7SLois Curfman McInnes    PLogRegisterEvent(). Source code must be compiled with
33197bb86f7SLois Curfman McInnes    -DPETSC_LOG, which is the default.
33297bb86f7SLois Curfman McInnes 
33397bb86f7SLois Curfman McInnes    PETSc automatically logs library events if the code has been
33497bb86f7SLois Curfman McInnes    compiled with -DPETSC_LOG, and -log, -log_summary, or -log_all are
33597bb86f7SLois Curfman McInnes    specified.  PLogEventEnd() is intended for logging user events
33697bb86f7SLois Curfman McInnes    to supplement this PETSc information.
33797bb86f7SLois Curfman McInnes 
33897bb86f7SLois Curfman McInnes     Example of Usage:
33935aab85fSBarry Smith $     int USER_EVENT;
3400eb211faSLois Curfman McInnes $     int user_event_flops;
341b045bd31SSatish Balay $     PLogEventRegister(&USER_EVENT,"User event","Color:");
34297bb86f7SLois Curfman McInnes $     PLogEventBegin(USER_EVENT,0,0,0,0);
34397bb86f7SLois Curfman McInnes $        [code segment to monitor]
3440eb211faSLois Curfman McInnes $        PLogFlops(user_event_flops);
34597bb86f7SLois Curfman McInnes $     PLogEventEnd(USER_EVENT,0,0,0,0);
34697bb86f7SLois Curfman McInnes 
34797bb86f7SLois Curfman McInnes .seealso: PLogEventRegister(), PLogEventBegin(), PLogFlops()
34897bb86f7SLois Curfman McInnes 
34997bb86f7SLois Curfman McInnes .keywords: log, event, end
35097bb86f7SLois Curfman McInnes M*/
35197bb86f7SLois Curfman McInnes 
35297bb86f7SLois Curfman McInnes #endif
35341debaddSBarry Smith 
35477c4ece6SBarry Smith 
35577c4ece6SBarry Smith 
356