diff options
author | Ben Gamari <ben@smart-cactus.org> | 2019-05-15 17:49:34 -0400 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2019-06-09 18:44:54 -0400 |
commit | 13572480cbb8588033a60c675bec0cdae382fb91 (patch) | |
tree | 22d633c860042703052394a95cd670509a65c095 | |
parent | 10452959136fbf271ac21eb0740030c046db36e1 (diff) | |
download | haskell-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.
-rw-r--r-- | rts/eventlog/EventLog.c | 25 |
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(); |