EventLog.h 3.41 KB
Newer Older
Simon Marlow's avatar
Simon Marlow committed
1 2 3 4 5 6 7 8 9 10 11
/* -----------------------------------------------------------------------------
 *
 * (c) The GHC Team, 2008-2009
 *
 * Support for fast binary event logging.
 *
 * ---------------------------------------------------------------------------*/

#ifndef EVENTLOG_H
#define EVENTLOG_H

Simon Marlow's avatar
Simon Marlow committed
12
#include "rts/EventLogFormat.h"
Simon Marlow's avatar
Simon Marlow committed
13 14
#include "Capability.h"

15
#include "BeginPrivate.h"
16

17
#ifdef TRACING
Simon Marlow's avatar
Simon Marlow committed
18 19 20 21 22 23 24 25 26

/*
 * Descriptions of EventTags for events.
 */
extern char *EventTagDesc[];

void initEventLogging(void);
void endEventLogging(void);
void freeEventLogging(void);
27 28
void abortEventLogging(void); // #4512 - after fork child needs to abort
void flushEventLog(void);     // event log inherited from parent
Simon Marlow's avatar
Simon Marlow committed
29 30

/* 
31 32
 * Post a scheduler event to the capability's event buffer (an event
 * that has an associated thread).
Simon Marlow's avatar
Simon Marlow committed
33
 */
34
void postSchedEvent(Capability *cap, EventTypeNum tag, 
35
                    StgThreadID id, StgWord info1, StgWord info2);
36

37 38 39 40 41
/*
 * Post a nullary event.
 */
void postEvent(Capability *cap, EventTypeNum tag);

42 43
void postMsg(char *msg, va_list ap);

44
void postUserMsg(Capability *cap, char *msg, va_list ap);
45

46
void postCapMsg(Capability *cap, char *msg, va_list ap);
Simon Marlow's avatar
Simon Marlow committed
47

48 49
void postEventStartup(EventCapNo n_caps);

50
/*
51
 * Post an event that is associated with a capability set
52
 */
53 54 55
void postCapsetEvent (EventTypeNum tag,
                      EventCapsetID capset,
                      StgWord info);
56

57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
/*
 * Post a capability set event with a string payload
 */
void postCapsetStrEvent (EventTypeNum tag,
                         EventCapsetID capset,
                         char *msg);

/*
 * Post a capability set event with several strings payload
 */
void postCapsetVecEvent (EventTypeNum tag,
                         EventCapsetID capset,
                         int argc,
                         char *msg[]);

72 73
void postWallClockTime (EventCapsetID capset);

74 75 76 77 78
/* 
 * Post a `par` spark event
 */
void postSparkEvent(Capability *cap, EventTypeNum tag, StgWord info1);

Duncan Coutts's avatar
Duncan Coutts committed
79 80 81 82 83 84 85
/*
 * Post an event with several counters relating to `par` sparks.
 */
void postSparkCountersEvent (Capability *cap, 
                             SparkCounters counters,
                             StgWord remaining);

86 87 88 89 90 91 92
/*
 * Post an event to annotate a thread with a label
 */
void postThreadLabel(Capability    *cap,
                     EventThreadID  id,
                     char          *label);

93 94 95 96 97
#else /* !TRACING */

INLINE_HEADER void postSchedEvent (Capability *cap  STG_UNUSED,
                                   EventTypeNum tag STG_UNUSED,
                                   StgThreadID id   STG_UNUSED,
98 99
                                   StgWord info1    STG_UNUSED,
                                   StgWord info2    STG_UNUSED)
100 101
{ /* nothing */ }

102 103 104 105
INLINE_HEADER void postEvent (Capability *cap  STG_UNUSED,
                              EventTypeNum tag STG_UNUSED)
{ /* nothing */ }

106 107 108
INLINE_HEADER void postMsg (char *msg STG_UNUSED, 
                            va_list ap STG_UNUSED)
{ /* nothing */ }
Simon Marlow's avatar
Simon Marlow committed
109

110
INLINE_HEADER void postCapMsg (Capability *cap STG_UNUSED,
111 112 113
                               char *msg STG_UNUSED, 
                               va_list ap STG_UNUSED)
{ /* nothing */ }
Simon Marlow's avatar
Simon Marlow committed
114

115 116 117 118 119 120

INLINE_HEADER void postThreadLabel(Capability    *cap   STG_UNUSED,
                                   EventThreadID  id    STG_UNUSED,
                                   char          *label STG_UNUSED)
{ /* nothing */ }
                                   
Simon Marlow's avatar
Simon Marlow committed
121 122
#endif

123
#include "EndPrivate.h"
124

125
#endif /* TRACING_H */