Skip to content
Merged
Show file tree
Hide file tree
Changes from 17 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
4c1de70
[coreclr]Extend lttngDataTypeMapping for mono
mdh1418 Apr 11, 2022
5e2022e
[mono][eventpipe] Implement SendMethodDetailsEvents on mono
mdh1418 Apr 11, 2022
76015cf
[mono][eventpipe] Utilize method signature getter to avoid uncreated …
mdh1418 Apr 26, 2022
76a52a6
[mono][eventpipe] Implement BulkType on mono
mdh1418 Apr 26, 2022
73cf3a8
debug traces
mdh1418 Apr 26, 2022
95a7494
Address struct tab formatting feedback
mdh1418 Apr 27, 2022
7426208
Address rg_type_parameter preallocated stack array size
mdh1418 Apr 27, 2022
30b7826
[mono][eventpipe] Add helper function to get mono type unique type id…
mdh1418 Apr 27, 2022
280d4a7
[mono][eventpipe] Differentiate MonoType and TypeID and pass separately
mdh1418 Apr 27, 2022
46f16b6
Address array max rank feedback
mdh1418 Apr 27, 2022
5396c04
Address byte_count bug feedback
mdh1418 Apr 27, 2022
6c3080c
Address Etw Type Flags feedback
mdh1418 Apr 28, 2022
0389903
Address cor_element_type underlying type feedback
mdh1418 Apr 28, 2022
5bea5d7
Address logger instance and if_necessary feedback
mdh1418 Apr 29, 2022
b51d791
Fix s_name
mdh1418 Apr 28, 2022
3e2fa00
Cleanup comment tab spacing
mdh1418 Apr 29, 2022
43ea8b6
Address feedback
mdh1418 May 3, 2022
ac86cd2
Removed temporary debug traces
mdh1418 May 5, 2022
5001aaf
Utilize macros for array size initialization
mdh1418 May 5, 2022
4817164
[mono] Mark mono_class_has_finalizer as MONO_COMPONENT_API
mdh1418 May 5, 2022
e3c9a65
Set global static const to macros
mdh1418 May 5, 2022
274b5ee
Address feedback
mdh1418 May 6, 2022
87f87f2
Change Event struct parameter _ElementSize type to size_t
mdh1418 May 6, 2022
bfb21fa
Remove parallel type id array to reduce bookkeeping and create type i…
mdh1418 May 9, 2022
f64fdd5
[mono][eventpipe] Add dedicated mempool for BulkTypeEventLogger to dy…
mdh1418 May 10, 2022
b8985c5
Revert "Change Event struct parameter _ElementSize type to size_t"
mdh1418 May 13, 2022
50bacd1
Fix write_event_buffer parameter type to avoid C4267 error on windows
mdh1418 May 13, 2022
49d7366
Move mem_pool under BulkTypeEventLogger
mdh1418 May 13, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/coreclr/scripts/genEventPipe.py
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ def generateWriteEventBody(template, providerName, eventName, runtimeFlavor):
emittedWriteToBuffer = True
elif paramName in template.arrays:
size = "sizeof(%s) * (int)%s" % (
lttngDataTypeMapping[parameter.winType],
getLttngDataTypeMapping(runtimeFlavor)[parameter.winType],
parameter.prop)
if template.name in specialCaseSizes and paramName in specialCaseSizes[template.name]:
size = "(int)(%s)" % specialCaseSizes[template.name][paramName]
Expand Down Expand Up @@ -1041,7 +1041,7 @@ def generateEventPipeImplFiles(
)

eventpipeImpl.write(
"EventPipeProvider *EventPipeProvider" + providerPrettyName +
"EventPipeProvider *EventPipeProvider" + providerPrettyName +
(" = nullptr;\n" if target_cpp else " = NULL;\n")
)
templateNodes = providerNode.getElementsByTagName('template')
Expand Down
62 changes: 45 additions & 17 deletions src/coreclr/scripts/genLttngProvider.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@

specialCaseSizes = { "BulkType" : { "Values" : "Values_ElementSize" }, "GCBulkRootCCW" : { "Values" : "Values_ElementSize" }, "GCBulkRCW" : { "Values" : "Values_ElementSize" }, "GCBulkRootStaticVar" : { "Values" : "Values_ElementSize" } }

lttngDataTypeMapping ={
coreCLRLttngDataTypeMapping ={
#constructed types
"win:null" :" ",
"win:Int64" :"const __int64",
Expand All @@ -88,6 +88,34 @@
"win:Binary" :"const BYTE"
}

monoLttngDataTypeMapping ={
#constructed types
"win:null" :" ",
"win:Int64" :"const int64_t",
"win:ULong" :"const uint32_t",
"win:count" :"*",
"win:Struct" :"const uint8_t *",
#actual spec
"win:GUID" :"const int32_t",
"win:AnsiString" :"const char*",
"win:UnicodeString" :"const ep_char8_t*",
"win:Double" :"const double",
"win:Int32" :"const int32_t",
"win:Boolean" :"const bool",
"win:UInt64" :"const uint64_t",
"win:UInt32" :"const uint32_t",
"win:UInt16" :"const uint16_t",
"win:UInt8" :"const uint8_t",
"win:Pointer" :"const void*",
"win:Binary" :"const uint8_t"
}

def getLttngDataTypeMapping(runtimeFlavor):
if runtimeFlavor.coreclr:
return coreCLRLttngDataTypeMapping
elif runtimeFlavor.mono:
return monoLttngDataTypeMapping

ctfDataTypeMapping ={
#constructed types
"win:Int64" :"ctf_integer",
Expand All @@ -114,7 +142,7 @@
def shouldPackTemplate(template):
return template.num_params > MAX_LTTNG_ARGS or len(template.structs) > 0 or len(template.arrays) > 0

def generateArgList(template):
def generateArgList(template, runtimeFlavor):
header = "TP_ARGS( \\\n"
footer = ")\n"

Expand All @@ -131,9 +159,9 @@ def generateArgList(template):
for params in fnSig.paramlist:
fnparam = fnSig.getParam(params)
wintypeName = fnparam.winType
typewName = lttngDataTypeMapping[wintypeName]
typewName = getLttngDataTypeMapping(runtimeFlavor)[wintypeName]
winCount = fnparam.count
countw = lttngDataTypeMapping[winCount]
countw = getLttngDataTypeMapping(runtimeFlavor)[winCount]

arg = " " + typewName
if countw != " ":
Expand All @@ -145,7 +173,7 @@ def generateArgList(template):
return header + args + footer


def generateFieldList(template):
def generateFieldList(template, runtimeFlavor):
header = " " + " TP_FIELDS(\n"
footer = "\n )\n)\n"

Expand All @@ -160,8 +188,8 @@ def generateFieldList(template):
fnparam = fnSig.getParam(params)
wintypeName = fnparam.winType
winCount = fnparam.count
countw = lttngDataTypeMapping[winCount]
typewName = lttngDataTypeMapping[wintypeName].replace("const ","")
countw = getLttngDataTypeMapping(runtimeFlavor)[winCount]
typewName = getLttngDataTypeMapping(runtimeFlavor)[wintypeName].replace("const ","")

field_body = None
ctf_type = None
Expand Down Expand Up @@ -193,7 +221,7 @@ def generateFieldList(template):

return header + field_list + footer

def generateLttngHeader(providerName, allTemplates, eventNodes):
def generateLttngHeader(providerName, allTemplates, eventNodes, runtimeFlavor):
lTTngHdr = []
for templateName in allTemplates:
template = allTemplates[templateName]
Expand All @@ -202,7 +230,7 @@ def generateLttngHeader(providerName, allTemplates, eventNodes):
lTTngHdr.append("\n#define " + templateName + "_TRACEPOINT_ARGS \\\n")

#TP_ARGS
tp_args = generateArgList(template)
tp_args = generateArgList(template, runtimeFlavor)
lTTngHdr.append(tp_args)

#TP_EVENT_CLASS
Expand All @@ -212,7 +240,7 @@ def generateLttngHeader(providerName, allTemplates, eventNodes):
lTTngHdr.append(" " + templateName + "_TRACEPOINT_ARGS,\n")

#TP_FIELDS
tp_fields = generateFieldList(template)
tp_fields = generateFieldList(template, runtimeFlavor)
lTTngHdr.append(tp_fields)

# Macro for defining event instance
Expand Down Expand Up @@ -270,7 +298,7 @@ def generateLttngHeader(providerName, allTemplates, eventNodes):
return ''.join(lTTngHdr)


def generateMethodBody(template, providerName, eventName):
def generateMethodBody(template, providerName, eventName, runtimeFlavor):
#emit code to init variables convert unicode to ansi string
result = []

Expand Down Expand Up @@ -331,9 +359,9 @@ def generateMethodBody(template, providerName, eventName):
continue

elif ctf_type == "ctf_sequence" or wintypeName == "win:Pointer":
line += "(" + lttngDataTypeMapping[wintypeName]
if not lttngDataTypeMapping[winCount] == " ":
line += lttngDataTypeMapping[winCount]
line += "(" + getLttngDataTypeMapping(runtimeFlavor)[wintypeName]
if not getLttngDataTypeMapping(runtimeFlavor)[winCount] == " ":
line += getLttngDataTypeMapping(runtimeFlavor)[winCount]

line += ") "
linefnbody.append(line + paramname)
Expand All @@ -358,7 +386,7 @@ def generateMethodBody(template, providerName, eventName):
pack_list.append(" success &= WriteToBuffer((const BYTE *)%s, %s, buffer, offset, size, fixedBuffer);" % (paramName, size))
emittedWriteToBuffer = True
elif paramName in template.arrays:
size = "sizeof(%s) * (int)%s" % (lttngDataTypeMapping[parameter.winType], parameter.prop)
size = "sizeof(%s) * (int)%s" % (getLttngDataTypeMapping(runtimeFlavor)[parameter.winType], parameter.prop)
if template.name in specialCaseSizes and paramName in specialCaseSizes[template.name]:
size = "(int)(%s)" % specialCaseSizes[template.name][paramName]
pack_list.append(" success &= WriteToBuffer((const BYTE *)%s, %s, buffer, offset, size, fixedBuffer);" % (paramName, size))
Expand Down Expand Up @@ -451,7 +479,7 @@ def generateLttngTpProvider(providerName, eventNodes, allTemplates, runtimeFlavo
lTTngImpl.append(" if (!EventXplatEnabled%s())\n" % (eventName,))
lTTngImpl.append(" return ERROR_SUCCESS;\n")

result = generateMethodBody(template, providerName, eventName)
result = generateMethodBody(template, providerName, eventName, runtimeFlavor)
lTTngImpl.append(result)

lTTngImpl.append("\n return ERROR_SUCCESS;\n}\n\n")
Expand Down Expand Up @@ -529,7 +557,7 @@ def generateLttngFiles(etwmanifest, eventprovider_directory, runtimeFlavor, dryR

lttnghdr_file.write("\n#include <lttng/tracepoint.h>\n\n")

lttnghdr_file.write(generateLttngHeader(providerName,allTemplates,eventNodes) + "\n")
lttnghdr_file.write(generateLttngHeader(providerName,allTemplates,eventNodes,runtimeFlavor) + "\n")

with open_for_update(lttngevntprov) as lttngimpl_file:
lttngimpl_file.write(stdprolog + "\n")
Expand Down
Loading