Skip to content

Commit 2ed2c7a

Browse files
committed
[EventPipe][User_Events] Add Provider name to metadata
1 parent e11a3d4 commit 2ed2c7a

File tree

1 file changed

+24
-6
lines changed

1 file changed

+24
-6
lines changed

src/native/eventpipe/ep-session.c

Lines changed: 24 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,39 @@ 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+
// Calculate the size of the complete metadata payload:
828+
// - Metadata ID (uint32_t)
829+
// - Provider name (UTF-16 string with null terminator)
830+
// - Event metadata payload
831+
EventPipeProvider *event_provider = ep_event_get_provider (ep_event);
832+
const ep_char16_t *provider_name_utf16 = ep_provider_get_provider_name_utf16 (event_provider);
833+
uint32_t provider_name_len = (uint32_t)ep_rt_utf16_string_len (provider_name_utf16);
834+
uint32_t provider_name_size_bytes = (provider_name_len + 1) * sizeof (ep_char16_t);
835+
uint32_t event_metadata_len = ep_event_get_metadata_len (ep_event);
836+
uint32_t complete_metadata_len = provider_name_size_bytes + event_metadata_len;
837+
838+
// Write extension header
827839
uint8_t extension_metadata[1 + sizeof(uint32_t)];
828-
uint32_t metadata_len = ep_event_get_metadata_len (ep_event);
829840
extension_metadata[0] = 0x01; // label
830-
*(uint32_t*)&extension_metadata[1] = metadata_len;
841+
*(uint32_t*)&extension_metadata[1] = complete_metadata_len;
831842
io[io_index].iov_base = extension_metadata;
832843
io[io_index].iov_len = sizeof(extension_metadata);
833844
io_index++;
834845
extension_len += sizeof(extension_metadata);
835846
io_bytes_to_write += sizeof(extension_metadata);
836847

848+
// Write provider name (UTF-16 with null terminator)
849+
io[io_index].iov_base = (void *)provider_name_utf16;
850+
io[io_index].iov_len = provider_name_size_bytes;
851+
io_index++;
852+
extension_len += provider_name_size_bytes;
853+
io_bytes_to_write += provider_name_size_bytes;
854+
837855
io[io_index].iov_base = (void *)ep_event_get_metadata (ep_event);
838-
io[io_index].iov_len = metadata_len;
856+
io[io_index].iov_len = event_metadata_len;
839857
io_index++;
840-
extension_len += metadata_len;
841-
io_bytes_to_write += metadata_len;
858+
extension_len += event_metadata_len;
859+
io_bytes_to_write += event_metadata_len;
842860
}
843861

844862
// Extension Activity IDs

0 commit comments

Comments
 (0)