EventLog.h 1.19 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 15 16 17 18 19 20 21 22 23 24 25
#include "Capability.h"

#ifdef EVENTLOG

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

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

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

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

void printAndClearEventLog(Capability *cap);

#else /* !EVENTLOG */

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

#endif

#endif /* EVENTLOG_H */