@@ -467,9 +467,8 @@ def parseTemplateNodes(templateNodes):
467
467
468
468
return allTemplates
469
469
470
- def generateClrallEvents (eventNodes , allTemplates , target_cpp , runtimeFlavor , write_xplatheader , providerName , inclusionList , generatedFileType ):
470
+ def generateClrallEvents (eventNodes , allTemplates , target_cpp , runtimeFlavor , write_xplatheader , providerName , inclusionList , generatedFileType , user_events ):
471
471
clrallEvents = []
472
- is_linux = sys .platform .startswith ('linux' )
473
472
for eventNode in eventNodes :
474
473
eventName = eventNode .getAttribute ('symbol' )
475
474
@@ -497,7 +496,7 @@ def generateClrallEvents(eventNodes, allTemplates, target_cpp, runtimeFlavor, wr
497
496
498
497
if runtimeFlavor .coreclr or write_xplatheader or runtimeFlavor .nativeaot :
499
498
if os .name == 'posix' :
500
- if is_linux and runtimeFlavor .coreclr :
499
+ if user_events and runtimeFlavor .coreclr :
501
500
clrallEvents .append (" || UserEventsEventEnabled" + eventName + "()" )
502
501
# native AOT does not support non-windows eventing other than via event pipe
503
502
if not runtimeFlavor .nativeaot :
@@ -593,7 +592,7 @@ def generateClrallEvents(eventNodes, allTemplates, target_cpp, runtimeFlavor, wr
593
592
594
593
fnbody .append ("ActivityId,RelatedActivityId);\n " )
595
594
596
- if is_linux and runtimeFlavor .coreclr :
595
+ if user_events and runtimeFlavor .coreclr :
597
596
fnbody .append ("status &= UserEventsWriteEvent" + eventName + "(" + '' .join (line ))
598
597
if len (line ) > 0 :
599
598
fnbody .append ("," )
@@ -872,7 +871,7 @@ def getKeywordsMaskCombined(keywords, keywordsToMask):
872
871
873
872
return mask
874
873
875
- def updateclreventsfile (write_xplatheader , target_cpp , runtimeFlavor , eventpipe_trace_context_typedef , dotnet_trace_context_typedef_windows , tree , clrallevents , inclusion_list , generatedFileType ):
874
+ def updateclreventsfile (write_xplatheader , target_cpp , runtimeFlavor , eventpipe_trace_context_typedef , dotnet_trace_context_typedef_windows , tree , clrallevents , inclusion_list , generatedFileType , user_events ):
876
875
is_windows = os .name == 'nt'
877
876
is_linux = sys .platform .startswith ('linux' )
878
877
with open_for_update (clrallevents ) as Clrallevents :
@@ -927,7 +926,7 @@ def updateclreventsfile(write_xplatheader, target_cpp, runtimeFlavor, eventpipe_
927
926
eventNodes = providerNode .getElementsByTagName ('event' )
928
927
929
928
#vm header:
930
- Clrallevents .write (generateClrallEvents (eventNodes , allTemplates , target_cpp , runtimeFlavor , write_xplatheader , providerName , inclusion_list , generatedFileType ))
929
+ Clrallevents .write (generateClrallEvents (eventNodes , allTemplates , target_cpp , runtimeFlavor , write_xplatheader , providerName , inclusion_list , generatedFileType , user_events ))
931
930
932
931
providerName = providerNode .getAttribute ('name' )
933
932
providerSymbol = providerNode .getAttribute ('symbol' )
@@ -942,7 +941,7 @@ def updateclreventsfile(write_xplatheader, target_cpp, runtimeFlavor, eventpipe_
942
941
if generatedFileType == "header" :
943
942
Clrallevents .write ("#endif // __CLR_ETW_ALL_MAIN_H__\n " )
944
943
945
- def generatePlatformIndependentFiles (sClrEtwAllMan , incDir , etmDummyFile , extern , write_xplatheader , target_cpp , runtimeFlavor , inclusion_list ):
944
+ def generatePlatformIndependentFiles (sClrEtwAllMan , incDir , etmDummyFile , extern , write_xplatheader , target_cpp , runtimeFlavor , inclusion_list , user_events ):
946
945
947
946
generateEtmDummyHeader (sClrEtwAllMan ,etmDummyFile )
948
947
tree = DOM .parse (sClrEtwAllMan )
@@ -1002,16 +1001,15 @@ def generatePlatformIndependentFiles(sClrEtwAllMan, incDir, etmDummyFile, extern
1002
1001
"""
1003
1002
1004
1003
is_windows = os .name == 'nt'
1005
- is_linux = sys .platform .startswith ('linux' )
1006
1004
1007
1005
# Write the main source(s) for FireETW* functions
1008
1006
# nativeaot requires header and source file to be separated as well as a noop implementation
1009
1007
if runtimeFlavor .nativeaot :
1010
- updateclreventsfile (write_xplatheader , target_cpp , runtimeFlavor , eventpipe_trace_context_typedef , dotnet_trace_context_typedef_windows , tree , os .path .join (incDir , "clretwallmain.cpp" ), inclusion_list , "source-impl" )
1011
- updateclreventsfile (write_xplatheader , target_cpp , runtimeFlavor , eventpipe_trace_context_typedef , dotnet_trace_context_typedef_windows , tree , os .path .join (incDir , "clretwallmain.h" ), inclusion_list , "header" )
1012
- updateclreventsfile (write_xplatheader , target_cpp , runtimeFlavor , eventpipe_trace_context_typedef , dotnet_trace_context_typedef_windows , tree , os .path .join (incDir , "disabledclretwallmain.cpp" ), inclusion_list , "source-impl-noop" )
1008
+ updateclreventsfile (write_xplatheader , target_cpp , runtimeFlavor , eventpipe_trace_context_typedef , dotnet_trace_context_typedef_windows , tree , os .path .join (incDir , "clretwallmain.cpp" ), inclusion_list , "source-impl" , user_events )
1009
+ updateclreventsfile (write_xplatheader , target_cpp , runtimeFlavor , eventpipe_trace_context_typedef , dotnet_trace_context_typedef_windows , tree , os .path .join (incDir , "clretwallmain.h" ), inclusion_list , "header" , user_events )
1010
+ updateclreventsfile (write_xplatheader , target_cpp , runtimeFlavor , eventpipe_trace_context_typedef , dotnet_trace_context_typedef_windows , tree , os .path .join (incDir , "disabledclretwallmain.cpp" ), inclusion_list , "source-impl-noop" , user_events )
1013
1011
else :
1014
- updateclreventsfile (write_xplatheader , target_cpp , runtimeFlavor , eventpipe_trace_context_typedef , dotnet_trace_context_typedef_windows , tree , os .path .join (incDir , "clretwallmain.h" ), inclusion_list , "header-impl" )
1012
+ updateclreventsfile (write_xplatheader , target_cpp , runtimeFlavor , eventpipe_trace_context_typedef , dotnet_trace_context_typedef_windows , tree , os .path .join (incDir , "clretwallmain.h" ), inclusion_list , "header-impl" , user_events )
1015
1013
1016
1014
if write_xplatheader :
1017
1015
clrproviders = os .path .join (incDir , "clrproviders.h" )
@@ -1084,7 +1082,7 @@ def generatePlatformIndependentFiles(sClrEtwAllMan, incDir, etmDummyFile, extern
1084
1082
#eventpipe: create clreventpipewriteevents.h
1085
1083
Clreventpipewriteevents .write (generateClrEventPipeWriteEvents (eventNodes , allTemplates , extern , target_cpp , runtimeFlavor , providerName , inclusion_list ) + "\n " )
1086
1084
1087
- if is_linux and runtimeFlavor .coreclr :
1085
+ if user_events and runtimeFlavor .coreclr :
1088
1086
clrusereventswriteeventsPath = os .path .join (incDir , "clrusereventswriteevents.h" )
1089
1087
with open_for_update (clrusereventswriteeventsPath ) as clrusereventswriteevents :
1090
1088
clrusereventswriteevents .write (stdprolog + "\n " )
@@ -1135,6 +1133,8 @@ def main(argv):
1135
1133
help = 'if specified, will not generated extern function stub headers' )
1136
1134
required .add_argument ('--noxplatheader' , action = 'store_true' ,
1137
1135
help = 'if specified, will not write a generated cross-platform header' )
1136
+ required .add_argument ('--userevents' , action = 'store_true' ,
1137
+ help = 'if specified, will emit support for user_events' )
1138
1138
args , unknown = parser .parse_known_args (argv )
1139
1139
if unknown :
1140
1140
print ('Unknown argument(s): ' , ', ' .join (unknown ))
@@ -1147,6 +1147,7 @@ def main(argv):
1147
1147
runtimeFlavor = RuntimeFlavor (args .runtimeflavor )
1148
1148
extern = not args .nonextern
1149
1149
write_xplatheader = not args .noxplatheader
1150
+ user_events = args .userevents
1150
1151
1151
1152
target_cpp = True
1152
1153
if runtimeFlavor .mono :
@@ -1156,7 +1157,7 @@ def main(argv):
1156
1157
1157
1158
inclusion_list = parseInclusionList (inclusion_filename )
1158
1159
1159
- generatePlatformIndependentFiles (sClrEtwAllMan , incdir , etmDummyFile , extern , write_xplatheader , target_cpp , runtimeFlavor , inclusion_list )
1160
+ generatePlatformIndependentFiles (sClrEtwAllMan , incdir , etmDummyFile , extern , write_xplatheader , target_cpp , runtimeFlavor , inclusion_list , user_events )
1160
1161
1161
1162
if __name__ == '__main__' :
1162
1163
return_code = main (sys .argv [1 :])
0 commit comments