mirror of
https://github.com/8damon/Blackbird-Platform
synced 2026-06-21 13:41:12 +00:00
af20733105
Introduce a lightweight compile-time-optional timing layer gated on BLACKBIRD_TEMPUS_DEBUG. BLACKBIRDTempusEnter returns the current QPC at a subsystem boundary; BLACKBIRDTempusLeave records elapsed ticks into a per-subsystem BLACKBIRD_TEMPUS_BUCKET. BLACKBIRDTempusQueryStats aggregates all buckets and the QPC frequency for export through GetStats. When BLACKBIRD_TEMPUS_DEBUG is not defined every macro expands to a zero-cost no-op so production builds carry no instrumentation overhead.
31 lines
1.0 KiB
C
31 lines
1.0 KiB
C
#ifndef BLACKBIRD_TEMPUS_DEBUG_H
|
|
#define BLACKBIRD_TEMPUS_DEBUG_H
|
|
|
|
#include <ntddk.h>
|
|
#include "..\..\ABI\blackbird_ioctl.h"
|
|
|
|
#ifdef BLACKBIRD_TEMPUS_DEBUG
|
|
|
|
NTSTATUS BLACKBIRDTempusInitialize(VOID);
|
|
VOID BLACKBIRDTempusUninitialize(VOID);
|
|
BOOLEAN BLACKBIRDTempusIsEnabled(VOID);
|
|
UINT64 BLACKBIRDTempusGetQpcFrequency(VOID);
|
|
ULONGLONG BLACKBIRDTempusEnter(_In_ UINT32 SubsystemId);
|
|
VOID BLACKBIRDTempusLeave(_In_ UINT32 SubsystemId, _In_ ULONGLONG StartQpc);
|
|
VOID BLACKBIRDTempusQueryStats(_Out_writes_(BucketCount) PBLACKBIRD_TEMPUS_BUCKET Buckets, _In_ UINT32 BucketCount,
|
|
_Out_opt_ UINT64 *QpcFrequency);
|
|
|
|
#else
|
|
|
|
#define BLACKBIRDTempusInitialize() STATUS_SUCCESS
|
|
#define BLACKBIRDTempusUninitialize() ((VOID)0)
|
|
#define BLACKBIRDTempusIsEnabled() (FALSE)
|
|
#define BLACKBIRDTempusGetQpcFrequency() (0ULL)
|
|
#define BLACKBIRDTempusEnter(_SubsystemId) (0ULL)
|
|
#define BLACKBIRDTempusLeave(_SubsystemId, _StartQpc) ((VOID)(_StartQpc))
|
|
#define BLACKBIRDTempusQueryStats(_Buckets, _BucketCount, _QpcFrequency) ((VOID)0)
|
|
|
|
#endif
|
|
|
|
#endif
|