Skip to content

Commit bb20ad0

Browse files
authored
[EventPipe][User_Events] Add Provider name to metadata (#118294)
1 parent 78abe10 commit bb20ad0

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

src/native/eventpipe/ep-session.c

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -765,7 +765,7 @@ session_tracepoint_write_event (
765765
return false;
766766

767767
// Setup iovec array
768-
const int max_non_parameter_iov = 8;
768+
const int max_non_parameter_iov = 9;
769769
const int max_static_io_capacity = 30; // Should account for most events that use EventData structs
770770
struct iovec static_io[max_static_io_capacity];
771771
struct iovec *io = static_io;
@@ -824,21 +824,33 @@ session_tracepoint_write_event (
824824
uint64_t session_mask = ep_session_get_mask (session);
825825
bool should_write_metadata = !ep_event_was_metadata_written (ep_event, session_mask);
826826
if (should_write_metadata) {
827+
EventPipeProvider *event_provider = ep_event_get_provider (ep_event);
828+
const ep_char16_t *provider_name_utf16 = ep_provider_get_provider_name_utf16 (event_provider);
829+
uint32_t provider_name_len = (uint32_t)ep_rt_utf16_string_len (provider_name_utf16);
830+
uint32_t provider_name_size_bytes = (provider_name_len + 1) * sizeof (ep_char16_t);
831+
uint32_t event_metadata_len = ep_event_get_metadata_len (ep_event);
832+
uint32_t complete_metadata_len = provider_name_size_bytes + event_metadata_len;
833+
827834
uint8_t extension_metadata[1 + sizeof(uint32_t)];
828-
uint32_t metadata_len = ep_event_get_metadata_len (ep_event);
829835
extension_metadata[0] = 0x01; // label
830-
*(uint32_t*)&extension_metadata[1] = metadata_len;
836+
*(uint32_t*)&extension_metadata[1] = complete_metadata_len;
831837
io[io_index].iov_base = extension_metadata;
832838
io[io_index].iov_len = sizeof(extension_metadata);
833839
io_index++;
834840
extension_len += sizeof(extension_metadata);
835841
io_bytes_to_write += sizeof(extension_metadata);
836842

843+
io[io_index].iov_base = (void *)provider_name_utf16;
844+
io[io_index].iov_len = provider_name_size_bytes;
845+
io_index++;
846+
extension_len += provider_name_size_bytes;
847+
io_bytes_to_write += provider_name_size_bytes;
848+
837849
io[io_index].iov_base = (void *)ep_event_get_metadata (ep_event);
838-
io[io_index].iov_len = metadata_len;
850+
io[io_index].iov_len = event_metadata_len;
839851
io_index++;
840-
extension_len += metadata_len;
841-
io_bytes_to_write += metadata_len;
852+
extension_len += event_metadata_len;
853+
io_bytes_to_write += event_metadata_len;
842854
}
843855

844856
// Extension Activity IDs

0 commit comments

Comments
 (0)