#define FireEtwGCMarkHandles(HeapNum, ClrInstanceID) 0
#define FireEtwGCMarkOlderGenerationRoots(HeapNum, ClrInstanceID) 0
#define FireEtwFinalizeObject(TypeID, ObjectID, ClrInstanceID) 0
-#define FireEtwSetGCHandle(HandleID, ObjectID, Kind, Generation, ClrInstanceID) 0
+#define FireEtwSetGCHandle(HandleID, ObjectID, Kind, Generation, DomainAddr, ClrInstanceID) 0
#define FireEtwDestroyGCHandle(HandleID, ClrInstanceID) 0
#define FireEtwGCSampledObjectAllocationLow(Address, TypeID, ObjectCountForTypeSample, TotalSizeForTypeSample, ClrInstanceID) 0
#define FireEtwPinObjectAtGCTime(HandleID, ObjectID, ObjectSize, TypeName, ClrInstanceID) 0
#define FireEtwFailFast(FailFastUserMessage, FailedEIP, OSExitCode, ClrExitCode, ClrInstanceID) 0
#define FireEtwPrvFinalizeObject(TypeID, ObjectID, ClrInstanceID, TypeName) 0
#define FireEtwCCWRefCountChange(HandleID, ObjectID, COMInterfacePointer, NewRefCount, AppDomainID, ClassName, NameSpace, Operation, ClrInstanceID) 0
-#define FireEtwPrvSetGCHandle(HandleID, ObjectID, Kind, Generation, ClrInstanceID) 0
+#define FireEtwPrvSetGCHandle(HandleID, ObjectID, Kind, Generation, DomainAddr, ClrInstanceId) 0
#define FireEtwPrvDestroyGCHandle(HandleID, ClrInstanceID) 0
#define FireEtwFusionMessageEvent(ClrInstanceID, Prepend, Message) 0
#define FireEtwFusionErrorCodeEvent(ClrInstanceID, Category, ErrorCode) 0
#define FireEtwBeginCreateManagedReference(ClrInstanceID) 0
#define FireEtwEndCreateManagedReference(ClrInstanceID) 0
#define FireEtwObjectVariantMarshallingToManaged(TypeName, Int1, ClrInstanceID) 0
+#define FireEtwGCDynamicEvent(EventName, PayloadSize, Payload, ClrInstanceId) 0
+#define FireEtwBGC1stSweepEnd(GenNumber, ClrInstanceId) 0
+#define FireEtwResolutionAttempted(ClrInstanceId, asmName, stage, assemblyLoadContextName, result, resultAsmName, resultAsmPath, errMsg) 0
+#define FireEtwResolutionAttempted(ClrInstanceId, asmName, event, alcName, result, resultAsmName, resultAsmPath, errMsg) 0
+#define FireEtwKnownPathProbed(ClrInstanceId, path, source, hr) 0
+#define FireEtwContentionStop_V1(managedContention, ClrInstanceId, elapsedTimeInNanosecond) 0
+#define FireEtwAssemblyLoadContextResolvingHandlerInvoked(ClrInstanceId, assemblyName, handlerName, alcName, resultAssemblyName, resultAssemblyPath) 0
+#define FireEtwAppDomainAssemblyResolveHandlerInvoked(ClrInstanceId, assemblyName, handlerName, resultAssemblyName, resultAssemblyPath) 0
+#define FireEtwAssemblyLoadFromResolveHandlerInvoked(ClrInstanceId, assemblyName, isTrackedAssembly, requestingAssemblyPath, requestedAssemblyPath) 0
+#define FireEtwEventSource(eventID, eventName, eventSourceName, payload) 0
#else // FEATURE_EVENT_TRACE
-#include "etmdummy.h"
+#include "../gc/env/etmdummy.h"
#endif // FEATURE_EVENT_TRACE
#ifndef FEATURE_REDHAWK
#define TRACE_LEVEL_VERBOSE 5 // Detailed traces from intermediate steps
#define DEF_LTTNG_KEYWORD_ENABLED 1
+#ifdef FEATURE_EVENT_TRACE
#include "clrproviders.h"
+#endif
#include "clrconfig.h"
class XplatEventLoggerConfiguration
{
ActivateAllKeywordsOfAllProviders();
}
+#ifdef FEATURE_EVENT_TRACE
else
{
- auto provider = GetProvider(providerName);
+ LTTNG_TRACE_CONTEXT *provider = GetProvider(providerName);
if (provider == nullptr)
{
return;
provider->Level = level;
provider->IsEnabled = true;
}
+#endif
}
static void ActivateAllKeywordsOfAllProviders()
{
+#ifdef FEATURE_EVENT_TRACE
for (LTTNG_TRACE_CONTEXT * const provider : ALL_LTTNG_PROVIDERS_CONTEXT)
{
provider->EnabledKeywordsBitmask = (ULONGLONG)(-1);
provider->Level = TRACE_LEVEL_VERBOSE;
provider->IsEnabled = true;
}
+#endif
}
private:
-
+#ifdef FEATURE_EVENT_TRACE
static LTTNG_TRACE_CONTEXT * const GetProvider(LPCWSTR providerName)
{
auto length = wcslen(providerName);
}
return nullptr;
}
+#endif
};
class XplatEventLogger
return configEventLogging.val(CLRConfig::EXTERNAL_EnableEventLog);
}
+#ifdef FEATURE_EVENT_TRACE
inline static bool IsProviderEnabled(DOTNET_TRACE_CONTEXT providerCtx)
{
return providerCtx.LttngProvider->IsEnabled;
}
return false;
}
-
+#endif
/*
This method is where COMPlus_LTTngConfig environment variable is parsed and is registered with the runtime provider
#else
static bool IsEnabled() { return false; }
static void SendSettings() {}
+ static void SendPause() {}
+ static void SendResume(UINT32 newMethodCount) {}
+ static void SendBackgroundJitStart(UINT32 pendingMethodCount) {}
+ static void SendBackgroundJitStop(UINT32 pendingMethodCount, UINT32 jittedMethodCount) {}
#endif
DISABLE_CONSTRUCT_COPY(Runtime);
EX_CATCH_HRESULT(hr);
return hr;
-#elif // FEATURE_PERFTRACING
+#else // FEATURE_PERFTRACING
return E_NOTIMPL;
#endif // FEATURE_PERFTRACING
}
HRESULT ProfToEEInterfaceImpl::EventPipeDefineEvent(
EVENTPIPE_PROVIDER provHandle,
- const WCHAR *szName,
+ const WCHAR *szName,
UINT32 eventID,
UINT64 keywords,
UINT32 eventVersion,
&& sizeof(EventPipeParameterDesc) == sizeof(COR_PRF_EVENTPIPE_PARAM_DESC),
"Layouts of EventPipeParameterDesc type and COR_PRF_EVENTPIPE_PARAM_DESC type do not match!");
EventPipeParameterDesc *params = reinterpret_cast<EventPipeParameterDesc *>(pParamDescs);
-
+
size_t metadataLength;
NewArrayHolder<BYTE> pMetadata = EventPipeMetadataGenerator::GenerateEventMetadata(
eventID,
EX_CATCH_HRESULT(hr);
return hr;
-#elif // FEATURE_PERFTRACING
+#else // FEATURE_PERFTRACING
return E_NOTIMPL;
#endif // FEATURE_PERFTRACING
}
static_assert(offsetof(EventData, Ptr) == offsetof(COR_PRF_EVENT_DATA, ptr)
&& offsetof(EventData, Size) == offsetof(COR_PRF_EVENT_DATA, size)
- && sizeof(EventData) == sizeof(COR_PRF_EVENT_DATA),
+ && sizeof(EventData) == sizeof(COR_PRF_EVENT_DATA),
"Layouts of EventData type and COR_PRF_EVENT_DATA type do not match!");
EventData *pEventData = reinterpret_cast<EventData *>(data);
EventPipe::WriteEvent(*pEvent, pEventData, cData, pActivityId, pRelatedActivityId);
return S_OK;
-#elif // FEATURE_PERFTRACING
+#else // FEATURE_PERFTRACING
return E_NOTIMPL;
#endif // FEATURE_PERFTRACING
}