Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormonojenkins <jo.shields+jenkins@xamarin.com>2020-11-17 11:24:54 +0300
committerGitHub <noreply@github.com>2020-11-17 11:24:54 +0300
commit1d90063b68d8ab26b289d047507a6b5af618a74e (patch)
tree98e97bc4917db619d4247b319b88f722aaa7e8df
parent646d877d006790e4d75d6da93edea9253b2cc6f0 (diff)
Adjust Mono EventPipe/DiagnosticServer C library to better support CoreCLR shim. (#20570)
Adjustments done to better align with implementation of CoreCLR shim using CoreCLR artifacts and C++ code (CoreCLR implementation done in separate PR). Disconnect runtime specific shim info from shared sources, all included shim files handled through defines. Exception safety and improved error handling, adding error checking and error returns into shim container functions. Walkthrough of codebase, aligning with gaps from CoreCLR + port of sample profiler and json file serializer. Implement core dump diagnostic command and runtime layer (needed by CoreCLR, currently not implemented on Mono). Implemented process env diagnostic command and runtime layer. Implemented profiler attach diagnostic command and runtime layer (needed by CoreCLR, currently not implemented on Mono). Fix native EventPipe test aligning with changes. @lambdageek @josalem Co-authored-by: lateralusX <lateralusX@users.noreply.github.com>
-rw-r--r--mono/metadata/icall-eventpipe.c18
-rw-r--r--msvc/libeventpipe.targets11
-rw-r--r--msvc/libeventpipe.targets.filters15
3 files changed, 35 insertions, 9 deletions
diff --git a/mono/metadata/icall-eventpipe.c b/mono/metadata/icall-eventpipe.c
index e6961c64691..64909bb6a0c 100644
--- a/mono/metadata/icall-eventpipe.c
+++ b/mono/metadata/icall-eventpipe.c
@@ -362,32 +362,32 @@ ves_icall_System_Diagnostics_Tracing_EventPipeInternal_EventActivityIdControl (
/* GUID * */uint8_t *activity_id)
{
int32_t result = 0;
- EventPipeThread *thread = ep_thread_get_or_create ();
+ ep_rt_thread_activity_id_handle_t activity_id_handle = ep_thread_get_activity_id_handle ();
- if (thread == NULL)
+ if (activity_id_handle == NULL)
return 1;
uint8_t current_activity_id [EP_ACTIVITY_ID_SIZE];
EventPipeActivityControlCode activity_control_code = (EventPipeActivityControlCode)control_code;
switch (activity_control_code) {
case EP_ACTIVITY_CONTROL_GET_ID:
- ep_thread_get_activity_id (thread, activity_id, EP_ACTIVITY_ID_SIZE);
+ ep_thread_get_activity_id (activity_id_handle, activity_id, EP_ACTIVITY_ID_SIZE);
break;
case EP_ACTIVITY_CONTROL_SET_ID:
- ep_thread_set_activity_id (thread, activity_id, EP_ACTIVITY_ID_SIZE);
+ ep_thread_set_activity_id (activity_id_handle, activity_id, EP_ACTIVITY_ID_SIZE);
break;
case EP_ACTIVITY_CONTROL_CREATE_ID:
ep_thread_create_activity_id (activity_id, EP_ACTIVITY_ID_SIZE);
break;
case EP_ACTIVITY_CONTROL_GET_SET_ID:
- ep_thread_get_activity_id (thread, current_activity_id, EP_ACTIVITY_ID_SIZE);
- ep_thread_set_activity_id (thread, activity_id, EP_ACTIVITY_ID_SIZE);
+ ep_thread_get_activity_id (activity_id_handle, current_activity_id, EP_ACTIVITY_ID_SIZE);
+ ep_thread_set_activity_id (activity_id_handle, activity_id, EP_ACTIVITY_ID_SIZE);
memcpy (activity_id, current_activity_id, EP_ACTIVITY_ID_SIZE);
break;
case EP_ACTIVITY_CONTROL_CREATE_SET_ID:
- ep_thread_get_activity_id (thread, activity_id, EP_ACTIVITY_ID_SIZE);
+ ep_thread_get_activity_id (activity_id_handle, activity_id, EP_ACTIVITY_ID_SIZE);
ep_thread_create_activity_id (current_activity_id, EP_ACTIVITY_ID_SIZE);
- ep_thread_set_activity_id (thread, current_activity_id, EP_ACTIVITY_ID_SIZE);
+ ep_thread_set_activity_id (activity_id_handle, current_activity_id, EP_ACTIVITY_ID_SIZE);
break;
default:
result = 1;
@@ -475,7 +475,7 @@ ves_icall_System_Diagnostics_Tracing_EventPipeInternal_WriteEventData (
{
g_assert (event_handle);
EventPipeEvent *ep_event = (EventPipeEvent *)event_handle;
- ep_write_event (ep_event, (EventData *)event_data, event_data_len, activity_id, related_activity_id);
+ ep_write_event_2 (ep_event, (EventData *)event_data, event_data_len, activity_id, related_activity_id);
}
#else /* ENABLE_PERFTRACING */
diff --git a/msvc/libeventpipe.targets b/msvc/libeventpipe.targets
index fca6c7e0877..1c2683ebcd2 100644
--- a/msvc/libeventpipe.targets
+++ b/msvc/libeventpipe.targets
@@ -5,6 +5,9 @@
<ExcludeEventPipeFromBuild Condition="'$(MONO_ENABLE_PERFTRACING)'=='' Or '$(MONO_ENABLE_PERFTRACING)'!='true'">true</ExcludeEventPipeFromBuild>
</PropertyGroup>
<ItemGroup Label="libeventpipe">
+ <ClCompile Include="$(MonoSourceLocation)\mono\eventpipe\ds.c">
+ <ExcludedFromBuild>$(ExcludeEventPipeFromBuild)</ExcludedFromBuild>
+ </ClCompile>
<ClCompile Include="$(MonoSourceLocation)\mono\eventpipe\ds-dump-protocol.c">
<ExcludedFromBuild>$(ExcludeEventPipeFromBuild)</ExcludedFromBuild>
</ClCompile>
@@ -89,6 +92,10 @@
</ClCompile>
<ClInclude Include="$(MonoSourceLocation)\mono\eventpipe\ep-file.h"/>
<ClInclude Include="$(MonoSourceLocation)\mono\eventpipe\ep-getter-setter.h"/>
+ <ClCompile Include="$(MonoSourceLocation)\mono\eventpipe\ep-json-file.c">
+ <ExcludedFromBuild>$(ExcludeEventPipeFromBuild)</ExcludedFromBuild>
+ </ClCompile>
+ <ClInclude Include="$(MonoSourceLocation)\mono\eventpipe\ep-json-file.h"/>
<ClCompile Include="$(MonoSourceLocation)\mono\eventpipe\ep-metadata-generator.c">
<ExcludedFromBuild>$(ExcludeEventPipeFromBuild)</ExcludedFromBuild>
</ClCompile>
@@ -112,6 +119,10 @@
</ClCompile>
<ClInclude Include="$(MonoSourceLocation)\mono\eventpipe\ep-thread.h"/>
<ClInclude Include="$(MonoSourceLocation)\mono\eventpipe\ep-types.h"/>
+ <ClCompile Include="$(MonoSourceLocation)\mono\eventpipe\ep-sample-profiler.c">
+ <ExcludedFromBuild>$(ExcludeEventPipeFromBuild)</ExcludedFromBuild>
+ </ClCompile>
+ <ClInclude Include="$(MonoSourceLocation)\mono\eventpipe\ep-sample-profiler.h"/>
<ClCompile Include="$(MonoSourceLocation)\mono\eventpipe\ep-session.c">
<ExcludedFromBuild>$(ExcludeEventPipeFromBuild)</ExcludedFromBuild>
</ClCompile>
diff --git a/msvc/libeventpipe.targets.filters b/msvc/libeventpipe.targets.filters
index 07ff710c166..54239951c54 100644
--- a/msvc/libeventpipe.targets.filters
+++ b/msvc/libeventpipe.targets.filters
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="libeventpipe">
+ <ClCompile Include="$(MonoSourceLocation)\mono\eventpipe\ds.c">
+ <Filter>Source Files$(MonoRuntimeFilterSubFolder)\eventpipe</Filter>
+ </ClCompile>
<ClCompile Include="$(MonoSourceLocation)\mono\eventpipe\ds-dump-protocol.c">
<Filter>Source Files$(MonoRuntimeFilterSubFolder)\eventpipe</Filter>
</ClCompile>
@@ -139,6 +142,12 @@
<ClInclude Include="$(MonoSourceLocation)\mono\eventpipe\ep-getter-setter.h">
<Filter>Header Files$(MonoRuntimeFilterSubFolder)\eventpipe</Filter>
</ClInclude>
+ <ClCompile Include="$(MonoSourceLocation)\mono\eventpipe\ep-json-file.c">
+ <Filter>Source Files$(MonoRuntimeFilterSubFolder)\eventpipe</Filter>
+ </ClCompile>
+ <ClInclude Include="$(MonoSourceLocation)\mono\eventpipe\ep-json-file.h">
+ <Filter>Header Files$(MonoRuntimeFilterSubFolder)\eventpipe</Filter>
+ </ClInclude>
<ClCompile Include="$(MonoSourceLocation)\mono\eventpipe\ep-metadata-generator.c">
<Filter>Source Files$(MonoRuntimeFilterSubFolder)\eventpipe</Filter>
</ClCompile>
@@ -184,6 +193,12 @@
<ClInclude Include="$(MonoSourceLocation)\mono\eventpipe\ep-types.h">
<Filter>Header Files$(MonoRuntimeFilterSubFolder)\eventpipe</Filter>
</ClInclude>
+ <ClCompile Include="$(MonoSourceLocation)\mono\eventpipe\ep-sample-profiler.c">
+ <Filter>Source Files$(MonoRuntimeFilterSubFolder)\eventpipe</Filter>
+ </ClCompile>
+ <ClInclude Include="$(MonoSourceLocation)\mono\eventpipe\ep-sample-profiler.h">
+ <Filter>Header Files$(MonoRuntimeFilterSubFolder)\eventpipe</Filter>
+ </ClInclude>
<ClCompile Include="$(MonoSourceLocation)\mono\eventpipe\ep-session.c">
<Filter>Source Files$(MonoRuntimeFilterSubFolder)\eventpipe</Filter>
</ClCompile>