This repository has been archived by the owner on Jan 23, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Move AsyncCausality to shared partition (dotnet/coreclr#22062)
* Move AsyncCausality to shared partition * Set FeatureAsyncCausalityTracer property Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
- Loading branch information
1 parent
19d609f
commit 88a9124
Showing
4 changed files
with
140 additions
and
2 deletions.
There are no files selected for viewing
57 changes: 57 additions & 0 deletions
57
src/Common/src/CoreLib/Internal/Threading/Tasks/AsyncCausalitySupport.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
// Licensed to the .NET Foundation under one or more agreements. | ||
// The .NET Foundation licenses this file to you under the MIT license. | ||
// See the LICENSE file in the project root for more information. | ||
|
||
using System.Threading.Tasks; | ||
using System.Runtime.CompilerServices; | ||
|
||
namespace Internal.Threading.Tasks | ||
{ | ||
// | ||
// An internal contract that exposes just enough async debugger support needed by the AsTask() extension methods in the WindowsRuntimeSystemExtensions class. | ||
// | ||
public static class AsyncCausalitySupport | ||
{ | ||
[MethodImpl(MethodImplOptions.AggressiveInlining)] | ||
public static void AddToActiveTasks(Task task) | ||
{ | ||
if (Task.s_asyncDebuggingEnabled) | ||
Task.AddToActiveTasks(task); | ||
} | ||
|
||
[MethodImpl(MethodImplOptions.AggressiveInlining)] | ||
public static void RemoveFromActiveTasks(Task task) | ||
{ | ||
if (Task.s_asyncDebuggingEnabled) | ||
Task.RemoveFromActiveTasks(task.Id); | ||
} | ||
|
||
public static bool LoggingOn | ||
{ | ||
[MethodImpl(MethodImplOptions.AggressiveInlining)] | ||
get | ||
{ | ||
return AsyncCausalityTracer.LoggingOn; | ||
} | ||
} | ||
|
||
[MethodImpl(MethodImplOptions.AggressiveInlining)] | ||
public static void TraceOperationCreation(Task task, string operationName) | ||
{ | ||
AsyncCausalityTracer.TraceOperationCreation(CausalityTraceLevel.Required, task.Id, operationName, 0); | ||
} | ||
|
||
[MethodImpl(MethodImplOptions.AggressiveInlining)] | ||
public static void TraceOperationCompletedSuccess(Task task) | ||
{ | ||
AsyncCausalityTracer.TraceOperationCompletion(CausalityTraceLevel.Required, task.Id, AsyncCausalityStatus.Completed); | ||
} | ||
|
||
[MethodImpl(MethodImplOptions.AggressiveInlining)] | ||
public static void TraceOperationCompletedError(Task task) | ||
{ | ||
AsyncCausalityTracer.TraceOperationCompletion(CausalityTraceLevel.Required, task.Id, AsyncCausalityStatus.Error); | ||
} | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
77 changes: 77 additions & 0 deletions
77
src/Common/src/CoreLib/System/Threading/Tasks/AsyncCausalityTracer.Noop.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
// Licensed to the .NET Foundation under one or more agreements. | ||
// The .NET Foundation licenses this file to you under the MIT license. | ||
// See the LICENSE file in the project root for more information. | ||
|
||
using System.Diagnostics; | ||
|
||
namespace System.Threading.Tasks | ||
{ | ||
internal enum CausalityTraceLevel | ||
{ | ||
Required = 0, | ||
Important = 1, | ||
Verbose = 2, | ||
} | ||
|
||
internal enum AsyncCausalityStatus | ||
{ | ||
Started = 0, | ||
Completed = 1, | ||
Canceled = 2, | ||
Error = 3, | ||
} | ||
|
||
internal enum CausalityRelation | ||
{ | ||
AssignDelegate = 0, | ||
Join = 1, | ||
Choice = 2, | ||
Cancel = 3, | ||
Error = 4, | ||
} | ||
|
||
internal enum CausalitySynchronousWork | ||
{ | ||
CompletionNotification = 0, | ||
ProgressNotification = 1, | ||
Execution = 2, | ||
} | ||
|
||
// | ||
// Empty implementation of AsyncCausality events | ||
// | ||
internal static class AsyncCausalityTracer | ||
{ | ||
public static bool LoggingOn => false; | ||
|
||
[Conditional("NOOP_ASYNCCASUALITYTRACER")] | ||
public static void EnableToETW(bool enabled) | ||
{ | ||
} | ||
|
||
[Conditional("NOOP_ASYNCCASUALITYTRACER")] | ||
public static void TraceOperationCreation(CausalityTraceLevel traceLevel, int taskId, string operationName, ulong relatedContext) | ||
{ | ||
} | ||
|
||
[Conditional("NOOP_ASYNCCASUALITYTRACER")] | ||
public static void TraceOperationCompletion(CausalityTraceLevel traceLevel, int taskId, AsyncCausalityStatus status) | ||
{ | ||
} | ||
|
||
[Conditional("NOOP_ASYNCCASUALITYTRACER")] | ||
public static void TraceOperationRelation(CausalityTraceLevel traceLevel, int taskId, CausalityRelation relation) | ||
{ | ||
} | ||
|
||
[Conditional("NOOP_ASYNCCASUALITYTRACER")] | ||
public static void TraceSynchronousWorkStart(CausalityTraceLevel traceLevel, int taskId, CausalitySynchronousWork work) | ||
{ | ||
} | ||
|
||
[Conditional("NOOP_ASYNCCASUALITYTRACER")] | ||
public static void TraceSynchronousWorkCompletion(CausalityTraceLevel traceLevel, CausalitySynchronousWork work) | ||
{ | ||
} | ||
} | ||
} |