summaryrefslogtreecommitdiff
path: root/src/vm/eventpipe.cpp
diff options
context:
space:
mode:
authorBrian Robbins <brianrob@microsoft.com>2018-01-29 18:49:51 -0800
committerGitHub <noreply@github.com>2018-01-29 18:49:51 -0800
commit6555bd3a1f6e6de0604e3065b4040c3a6ac1e44e (patch)
treeceea55c993c6103e0305b8dfbd503093e527323d /src/vm/eventpipe.cpp
parentad7c1e85fa95a92d5cc58b93b6ca9e2b77ec86b6 (diff)
downloadcoreclr-6555bd3a1f6e6de0604e3065b4040c3a6ac1e44e.tar.gz
coreclr-6555bd3a1f6e6de0604e3065b4040c3a6ac1e44e.tar.bz2
coreclr-6555bd3a1f6e6de0604e3065b4040c3a6ac1e44e.zip
Add ActivityId Support to EventPipe (#16055)
Diffstat (limited to 'src/vm/eventpipe.cpp')
-rw-r--r--src/vm/eventpipe.cpp67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/vm/eventpipe.cpp b/src/vm/eventpipe.cpp
index 41af3efa03..2d7e3027bf 100644
--- a/src/vm/eventpipe.cpp
+++ b/src/vm/eventpipe.cpp
@@ -545,6 +545,12 @@ void EventPipe::WriteEventInternal(EventPipeEvent &event, EventPipeEventPayload
return;
}
+ // If the activity id isn't specified, pull it from the current thread.
+ if(pActivityId == NULL)
+ {
+ pActivityId = pThread->GetActivityId();
+ }
+
if(!s_pConfig->RundownEnabled() && s_pBufferManager != NULL)
{
if(!s_pBufferManager->WriteEvent(pThread, *s_pSession, event, payload, pActivityId, pRelatedActivityId))
@@ -964,6 +970,67 @@ void QCALLTYPE EventPipeInternal::DeleteProvider(
END_QCALL;
}
+int QCALLTYPE EventPipeInternal::EventActivityIdControl(
+ uint controlCode,
+ GUID *pActivityId)
+{
+
+ QCALL_CONTRACT;
+
+ int retVal = 0;
+
+ BEGIN_QCALL;
+
+ Thread *pThread = GetThread();
+ if(pThread == NULL || pActivityId == NULL)
+ {
+ retVal = 1;
+ }
+ else
+ {
+ ActivityControlCode activityControlCode = (ActivityControlCode)controlCode;
+ GUID currentActivityId;
+ switch(activityControlCode)
+ {
+ case ActivityControlCode::EVENT_ACTIVITY_CONTROL_GET_ID:
+
+ *pActivityId = *pThread->GetActivityId();
+ break;
+
+ case ActivityControlCode::EVENT_ACTIVITY_CONTROL_SET_ID:
+
+ pThread->SetActivityId(pActivityId);
+ break;
+
+ case ActivityControlCode::EVENT_ACTIVITY_CONTROL_CREATE_ID:
+
+ CoCreateGuid(pActivityId);
+ break;
+
+ case ActivityControlCode::EVENT_ACTIVITY_CONTROL_GET_SET_ID:
+
+ currentActivityId = *pThread->GetActivityId();
+ pThread->SetActivityId(pActivityId);
+ *pActivityId = currentActivityId;
+
+ break;
+
+ case ActivityControlCode::EVENT_ACTIVITY_CONTROL_CREATE_SET_ID:
+
+ *pActivityId = *pThread->GetActivityId();
+ CoCreateGuid(&currentActivityId);
+ pThread->SetActivityId(&currentActivityId);
+ break;
+
+ default:
+ retVal = 1;
+ };
+ }
+
+ END_QCALL;
+ return retVal;
+}
+
void QCALLTYPE EventPipeInternal::WriteEvent(
INT_PTR eventHandle,
UINT32 eventID,