opentelemetry-dotnet/test/OpenTelemetry.Tests.Stress/StressTestNativeMethods.cs

29 lines
665 B
C#

// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
using System.Runtime.InteropServices;
namespace OpenTelemetry.Tests.Stress;
internal static class StressTestNativeMethods
{
public static ulong GetCpuCycles()
{
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
return 0;
}
if (!QueryProcessCycleTime((IntPtr)(-1), out var cycles))
{
return 0;
}
return cycles;
}
[DllImport("kernel32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool QueryProcessCycleTime(IntPtr hProcess, out ulong cycles);
}