@@ -765,7 +765,7 @@ session_tracepoint_write_event (
765
765
return false;
766
766
767
767
// Setup iovec array
768
- const int max_non_parameter_iov = 8 ;
768
+ const int max_non_parameter_iov = 9 ;
769
769
const int max_static_io_capacity = 30 ; // Should account for most events that use EventData structs
770
770
struct iovec static_io [max_static_io_capacity ];
771
771
struct iovec * io = static_io ;
@@ -824,21 +824,33 @@ session_tracepoint_write_event (
824
824
uint64_t session_mask = ep_session_get_mask (session );
825
825
bool should_write_metadata = !ep_event_was_metadata_written (ep_event , session_mask );
826
826
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
+
827
834
uint8_t extension_metadata [1 + sizeof (uint32_t )];
828
- uint32_t metadata_len = ep_event_get_metadata_len (ep_event );
829
835
extension_metadata [0 ] = 0x01 ; // label
830
- * (uint32_t * )& extension_metadata [1 ] = metadata_len ;
836
+ * (uint32_t * )& extension_metadata [1 ] = complete_metadata_len ;
831
837
io [io_index ].iov_base = extension_metadata ;
832
838
io [io_index ].iov_len = sizeof (extension_metadata );
833
839
io_index ++ ;
834
840
extension_len += sizeof (extension_metadata );
835
841
io_bytes_to_write += sizeof (extension_metadata );
836
842
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
+
837
849
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 ;
839
851
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 ;
842
854
}
843
855
844
856
// Extension Activity IDs
0 commit comments