summaryrefslogtreecommitdiff
path: root/rts/eventlog
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2019-05-15 17:49:34 -0400
committerMarge Bot <ben+marge-bot@smart-cactus.org>2019-06-09 18:44:54 -0400
commit13572480cbb8588033a60c675bec0cdae382fb91 (patch)
tree22d633c860042703052394a95cd670509a65c095 /rts/eventlog
parent10452959136fbf271ac21eb0740030c046db36e1 (diff)
downloadhaskell-13572480cbb8588033a60c675bec0cdae382fb91.tar.gz
rts: Separate population of eventTypes from initial event generation
Previously these two orthogonal concerns were both implemented in postHeaderEvents which made it difficult to send header events after RTS initialization.
Diffstat (limited to 'rts/eventlog')
-rw-r--r--rts/eventlog/EventLog.c25
1 files changed, 17 insertions, 8 deletions
diff --git a/rts/eventlog/EventLog.c b/rts/eventlog/EventLog.c
index c853492f09..0651de268c 100644
--- a/rts/eventlog/EventLog.c
+++ b/rts/eventlog/EventLog.c
@@ -267,15 +267,9 @@ flushEventLog(void)
}
static void
-postHeaderEvents(void)
+init_event_types(void)
{
- // Write in buffer: the header begin marker.
- postInt32(&eventBuf, EVENT_HEADER_BEGIN);
-
- // Mark beginning of event types in the header.
- postInt32(&eventBuf, EVENT_HET_BEGIN);
for (int t = 0; t < NUM_GHC_EVENT_TAGS; ++t) {
-
eventTypes[t].etNum = t;
eventTypes[t].desc = EventDesc[t];
@@ -450,9 +444,22 @@ postHeaderEvents(void)
default:
continue; /* ignore deprecated events */
}
+ }
+}
+
+static void
+postHeaderEvents(void)
+{
+ // Write in buffer: the header begin marker.
+ postInt32(&eventBuf, EVENT_HEADER_BEGIN);
+ // Mark beginning of event types in the header.
+ postInt32(&eventBuf, EVENT_HET_BEGIN);
+
+ for (int t = 0; t < NUM_GHC_EVENT_TAGS; ++t) {
// Write in buffer: the start event type.
- postEventType(&eventBuf, &eventTypes[t]);
+ if (eventTypes[t].desc)
+ postEventType(&eventBuf, &eventTypes[t]);
}
// Mark end of event types in the header.
@@ -470,6 +477,8 @@ initEventLogging(const EventLogWriter *ev_writer)
{
uint32_t n_caps;
+ init_event_types();
+
event_log_writer = ev_writer;
initEventLogWriter();