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 /rts/eventlog | |
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.
Diffstat (limited to 'rts/eventlog')
-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(); |