EventLog.h 1.26 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 16
#pragma GCC visibility push(hidden)

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

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

void initEventLogging(void);
void endEventLogging(void);
void freeEventLogging(void);

28
void postEvent_(Capability *cap, EventTypeNum tag, StgThreadID id, StgWord64 other);
Simon Marlow's avatar
Simon Marlow committed
29 30 31 32

/* 
 * Post an event to the capability's event buffer.
 */
33
INLINE_HEADER void postEvent(Capability *cap, EventTypeNum tag, StgThreadID id, StgWord64 other)
Simon Marlow's avatar
Simon Marlow committed
34 35
{
    if (RtsFlags.EventLogFlags.doEventLogging) {
36
        postEvent_(cap, tag, id, other);
Simon Marlow's avatar
Simon Marlow committed
37 38 39 40 41 42 43 44 45 46
    }
}

void printAndClearEventLog(Capability *cap);

#else /* !EVENTLOG */

INLINE_HEADER void postEvent(Capability *cap  STG_UNUSED,
                             EventTypeNum tag STG_UNUSED,
                             StgThreadID id   STG_UNUSED,
47
                             StgWord64 other  STG_UNUSED)
Simon Marlow's avatar
Simon Marlow committed
48 49 50 51 52 53
{
    /* nothing */
}

#endif

54 55
#pragma GCC visibility pop

Simon Marlow's avatar
Simon Marlow committed
56
#endif /* EVENTLOG_H */