58 lines
1.6 KiB
C

/** @file
Copyright (C) 2020, vit9696. All rights reserved.
All rights reserved.
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#ifndef APPLE_PERF_DATA_H
#define APPLE_PERF_DATA_H
#pragma pack(push, 1)
/**
Performance data header area (total reserved).
**/
#define APPLE_PERF_DATA_HEADER_SIZE 64
/**
Performance data header signature.
**/
#define APPLE_PERF_DATA_SIGNATURE 0x6F6F746C65666962ULL ///< ootlefib (EfiBoot L)
/**
Performance data header.
**/
typedef struct APPLE_PERF_DATA_ {
UINT64 Signature;
UINT32 NumberOfEntries;
UINT32 NextPerfData;
UINT64 TimerFrequencyMs;
UINT64 TimerStartMs;
} APPLE_PERF_DATA;
/**
Performance data entry.
**/
typedef struct APPLE_PERF_ENTRY_ {
UINT32 StreamId; ///< Identifier, normally 1.
UINT32 EntryDataSize; ///< EntryData size aligned up to 8.
UINT64 TimestampMs;
UINT64 TimestampTsc;
CHAR8 EntryData[]; ///< Null terminated
} APPLE_PERF_ENTRY;
#define APPLE_PERF_FIRST_ENTRY(Data) ((APPLE_PERF_ENTRY *) ((UINTN) (Data) + APPLE_PERF_DATA_HEADER_SIZE))
#define APPLE_PERF_NEXT_ENTRY(Entry) ((APPLE_PERF_ENTRY *) ((UINTN) (Entry) + sizeof (APPLE_PERF_ENTRY) + (Entry)->EntryDataSize))
#pragma pack(pop)
#endif // APPLE_PERF_DATA_H