112 lines
2.6 KiB
C++
112 lines
2.6 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
// HEADER_UNIT_SKIP - Not included directly
|
|
|
|
namespace UE {
|
|
namespace Trace {
|
|
|
|
#if defined(TRACE_PRIVATE_PROTOCOL_5)
|
|
inline
|
|
#endif
|
|
namespace Protocol5
|
|
{
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
enum EProtocol : uint8 { Id = 5 };
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
using Protocol4::EFieldType;
|
|
using Protocol4::FNewEventEvent;
|
|
using Protocol4::EEventFlags;
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
struct EKnownEventUids
|
|
{
|
|
static const uint16 Flag_TwoByteUid = 1 << 0;
|
|
static const uint16 _UidShift = 1;
|
|
enum : uint16
|
|
{
|
|
NewEvent = 0,
|
|
AuxData,
|
|
_AuxData_Unused,
|
|
AuxDataTerminal,
|
|
EnterScope,
|
|
LeaveScope,
|
|
_Unused6,
|
|
_Unused7,
|
|
EnterScope_T,
|
|
_EnterScope_T_Unused0, // reserved for variable
|
|
_EnterScope_T_Unused1, // length timestamps
|
|
_EnterScope_T_Unused2,
|
|
LeaveScope_T,
|
|
_LeaveScope_T_Unused0,
|
|
_LeaveScope_T_Unused1,
|
|
_LeaveScope_T_Unused2,
|
|
_WellKnownNum,
|
|
};
|
|
static const uint16 User = _WellKnownNum;
|
|
static const uint16 Max = (1 << (16 - _UidShift)) - 1;
|
|
static const uint16 Invalid = Max;
|
|
};
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
struct FEventHeader
|
|
{
|
|
uint16 Uid;
|
|
uint8 Data[];
|
|
};
|
|
static_assert(sizeof(FEventHeader) == 2, "Struct layout assumption doesn't match expectation");
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
struct FImportantEventHeader
|
|
{
|
|
uint16 Uid;
|
|
uint16 Size;
|
|
uint8 Data[];
|
|
};
|
|
static_assert(sizeof(FImportantEventHeader) == 4, "Struct layout assumption doesn't match expectation");
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
#pragma pack(push, 1)
|
|
struct FEventHeaderSync
|
|
{
|
|
uint16 Uid;
|
|
uint16 SerialLow; // 24-bit
|
|
uint8 SerialHigh; // serial no.
|
|
uint8 Data[];
|
|
};
|
|
#pragma pack(pop)
|
|
static_assert(sizeof(FEventHeaderSync) == 5, "Packing assumption doesn't hold");
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
struct FAuxHeader
|
|
{
|
|
enum : uint32
|
|
{
|
|
FieldShift = 8,
|
|
FieldBits = 5,
|
|
FieldMask = (1 << FieldBits) - 1,
|
|
SizeShift = FieldShift + FieldBits,
|
|
SizeLimit = 1 << (32 - SizeShift),
|
|
};
|
|
|
|
union
|
|
{
|
|
struct
|
|
{
|
|
uint8 Uid;
|
|
uint8 FieldIndex_Size;
|
|
uint16 Size;
|
|
};
|
|
uint32 Pack;
|
|
};
|
|
uint8 Data[];
|
|
};
|
|
static_assert(sizeof(FAuxHeader) == 4, "Struct layout assumption doesn't match expectation");
|
|
|
|
} // namespace Protocol5
|
|
} // namespace Trace
|
|
} // namespace UE
|