summaryrefslogtreecommitdiff
path: root/src/vm/eventpipe.cpp
diff options
context:
space:
mode:
authorXiangyang (Mark) Guo <xiangyang.guo@intel.com>2017-05-15 13:05:32 -0700
committerBrian Robbins <brianrob@microsoft.com>2017-05-15 13:05:32 -0700
commita7fae647fc09448cce04276a87a2873c09d31d42 (patch)
tree8f8afd1e440ec2ee802da1751ae8efee3497c015 /src/vm/eventpipe.cpp
parent37168aeaf5d70de2d7af52d102002fc29b9feaf1 (diff)
downloadcoreclr-a7fae647fc09448cce04276a87a2873c09d31d42.tar.gz
coreclr-a7fae647fc09448cce04276a87a2873c09d31d42.tar.bz2
coreclr-a7fae647fc09448cce04276a87a2873c09d31d42.zip
Write EventSource events with metadata to EventPipe (#11577)
* Fix EventPipe initialization. * rebase code with master, add prototype of event source metadata * fix define event * add null ptr checking * move WriteEvent metadata serialization to managed side * Fix enabled keywords for COMPlus_PerformanceTracing=1. * put parameter name into metadata, use WriteToBuffer * Write event metadata to the file. * allocate buffer in EventPipeEvent ctor * prevent double free * refactor code * AddEvent params reorder
Diffstat (limited to 'src/vm/eventpipe.cpp')
-rw-r--r--src/vm/eventpipe.cpp23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/vm/eventpipe.cpp b/src/vm/eventpipe.cpp
index 5805641bc5..58f93ef179 100644
--- a/src/vm/eventpipe.cpp
+++ b/src/vm/eventpipe.cpp
@@ -484,22 +484,30 @@ INT_PTR QCALLTYPE EventPipeInternal::CreateProvider(
return reinterpret_cast<INT_PTR>(pProvider);
}
-INT_PTR QCALLTYPE EventPipeInternal::AddEvent(
+INT_PTR QCALLTYPE EventPipeInternal::DefineEvent(
INT_PTR provHandle,
- __int64 keywords,
unsigned int eventID,
+ __int64 keywords,
unsigned int eventVersion,
unsigned int level,
- bool needStack)
+ void *pMetadata,
+ unsigned int metadataLength)
{
QCALL_CONTRACT;
+
+ EventPipeEvent *pEvent = NULL;
+
BEGIN_QCALL;
- // TODO
+ _ASSERTE(provHandle != NULL);
+ _ASSERTE(pMetadata != NULL);
+ EventPipeProvider *pProvider = reinterpret_cast<EventPipeProvider *>(provHandle);
+ pEvent = pProvider->AddEvent(eventID, keywords, eventVersion, (EventPipeEventLevel)level, (BYTE *)pMetadata, metadataLength);
+ _ASSERTE(pEvent != NULL);
END_QCALL;
- return 0;
+ return reinterpret_cast<INT_PTR>(pEvent);
}
void QCALLTYPE EventPipeInternal::DeleteProvider(
@@ -519,13 +527,16 @@ void QCALLTYPE EventPipeInternal::DeleteProvider(
void QCALLTYPE EventPipeInternal::WriteEvent(
INT_PTR eventHandle,
+ unsigned int eventID,
void *pData,
unsigned int length)
{
QCALL_CONTRACT;
BEGIN_QCALL;
- // TODO
+ _ASSERTE(eventHandle != NULL);
+ EventPipeEvent *pEvent = reinterpret_cast<EventPipeEvent *>(eventHandle);
+ EventPipe::WriteEvent(*pEvent, (BYTE *)pData, length);
END_QCALL;
}