diff options
author | Xiangyang (Mark) Guo <xiangyang.guo@intel.com> | 2017-05-15 13:05:32 -0700 |
---|---|---|
committer | Brian Robbins <brianrob@microsoft.com> | 2017-05-15 13:05:32 -0700 |
commit | a7fae647fc09448cce04276a87a2873c09d31d42 (patch) | |
tree | 8f8afd1e440ec2ee802da1751ae8efee3497c015 /src/vm/eventpipe.cpp | |
parent | 37168aeaf5d70de2d7af52d102002fc29b9feaf1 (diff) | |
download | coreclr-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.cpp | 23 |
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; } |