XenevaOS
Loading...
Searching...
No Matches
PerformanceLib.h
Go to the documentation of this file.
1
15#ifndef __PERFORMANCE_LIB_H__
16#define __PERFORMANCE_LIB_H__
17
21#define PERFORMANCE_LIBRARY_PROPERTY_MEASUREMENT_ENABLED 0x00000001
22
23//
24// Public Progress Identifiers for Event Records.
25//
26#define PERF_EVENT_ID 0x00
27
28#define MODULE_START_ID 0x01
29#define MODULE_END_ID 0x02
30#define MODULE_LOADIMAGE_START_ID 0x03
31#define MODULE_LOADIMAGE_END_ID 0x04
32#define MODULE_DB_START_ID 0x05
33#define MODULE_DB_END_ID 0x06
34#define MODULE_DB_SUPPORT_START_ID 0x07
35#define MODULE_DB_SUPPORT_END_ID 0x08
36#define MODULE_DB_STOP_START_ID 0x09
37#define MODULE_DB_STOP_END_ID 0x0A
38
39#define PERF_EVENTSIGNAL_START_ID 0x10
40#define PERF_EVENTSIGNAL_END_ID 0x11
41#define PERF_CALLBACK_START_ID 0x20
42#define PERF_CALLBACK_END_ID 0x21
43#define PERF_FUNCTION_START_ID 0x30
44#define PERF_FUNCTION_END_ID 0x31
45#define PERF_INMODULE_START_ID 0x40
46#define PERF_INMODULE_END_ID 0x41
47#define PERF_CROSSMODULE_START_ID 0x50
48#define PERF_CROSSMODULE_END_ID 0x51
49
50//
51// Declare bits for PcdPerformanceLibraryPropertyMask and
52// also used as the Type parameter of LogPerformanceMeasurementEnabled().
53//
54#define PERF_CORE_START_IMAGE 0x0002
55#define PERF_CORE_LOAD_IMAGE 0x0004
56#define PERF_CORE_DB_SUPPORT 0x0008
57#define PERF_CORE_DB_START 0x0010
58#define PERF_CORE_DB_STOP 0x0020
59
60#define PERF_GENERAL_TYPE 0x0040
61
86 IN CONST VOID *Handle, OPTIONAL
87 IN CONST CHAR8 *Token, OPTIONAL
88 IN CONST CHAR8 *Module, OPTIONAL
89 IN UINT64 TimeStamp
90 );
91
116EFIAPI
118 IN CONST VOID *Handle, OPTIONAL
119 IN CONST CHAR8 *Token, OPTIONAL
120 IN CONST CHAR8 *Module, OPTIONAL
121 IN UINT64 TimeStamp
122 );
123
163UINTN
164EFIAPI
166 IN UINTN LogEntryKey,
167 OUT CONST VOID **Handle,
168 OUT CONST CHAR8 **Token,
169 OUT CONST CHAR8 **Module,
170 OUT UINT64 *StartTimeStamp,
171 OUT UINT64 *EndTimeStamp
172 );
173
198EFIAPI
200 IN CONST VOID *Handle, OPTIONAL
201 IN CONST CHAR8 *Token, OPTIONAL
202 IN CONST CHAR8 *Module, OPTIONAL
203 IN UINT64 TimeStamp,
204 IN UINT32 Identifier
205 );
206
233EFIAPI
235 IN CONST VOID *Handle, OPTIONAL
236 IN CONST CHAR8 *Token, OPTIONAL
237 IN CONST CHAR8 *Module, OPTIONAL
238 IN UINT64 TimeStamp,
239 IN UINT32 Identifier
240 );
241
283UINTN
284EFIAPI
286 IN UINTN LogEntryKey,
287 OUT CONST VOID **Handle,
288 OUT CONST CHAR8 **Token,
289 OUT CONST CHAR8 **Module,
290 OUT UINT64 *StartTimeStamp,
291 OUT UINT64 *EndTimeStamp,
292 OUT UINT32 *Identifier
293 );
294
308EFIAPI
310 VOID
311 );
312
313
327EFIAPI
330 );
331
349EFIAPI
351 IN CONST VOID *CallerIdentifier, OPTIONAL
352 IN CONST VOID *Guid, OPTIONAL
353 IN CONST CHAR8 *String, OPTIONAL
355 IN UINT32 Identifier
356 );
357
366#define PERF_START_IMAGE_BEGIN(ModuleHandle) \
367 do { \
368 if (LogPerformanceMeasurementEnabled (PERF_CORE_START_IMAGE)) { \
369 LogPerformanceMeasurement (ModuleHandle, NULL, NULL, 0, MODULE_START_ID); \
370 } \
371 } while (FALSE)
372
381#define PERF_START_IMAGE_END(ModuleHandle) \
382 do { \
383 if (LogPerformanceMeasurementEnabled (PERF_CORE_START_IMAGE)) { \
384 LogPerformanceMeasurement (ModuleHandle, NULL, NULL, 0, MODULE_END_ID); \
385 } \
386 } while (FALSE)
387
396#define PERF_LOAD_IMAGE_BEGIN(ModuleHandle) \
397 do { \
398 if (LogPerformanceMeasurementEnabled (PERF_CORE_LOAD_IMAGE)) { \
399 LogPerformanceMeasurement (ModuleHandle, NULL, NULL, 0, MODULE_LOADIMAGE_START_ID); \
400 } \
401 } while (FALSE)
402
411#define PERF_LOAD_IMAGE_END(ModuleHandle) \
412 do { \
413 if (LogPerformanceMeasurementEnabled (PERF_CORE_LOAD_IMAGE)) { \
414 LogPerformanceMeasurement (ModuleHandle, NULL, NULL, 0, MODULE_LOADIMAGE_END_ID); \
415 } \
416 } while (FALSE)
417
426#define PERF_DRIVER_BINDING_SUPPORT_BEGIN(ModuleHandle, ControllerHandle) \
427 do { \
428 if (LogPerformanceMeasurementEnabled (PERF_CORE_DB_SUPPORT)) { \
429 LogPerformanceMeasurement (ModuleHandle, NULL, NULL, (UINT64)(UINTN)ControllerHandle, MODULE_DB_SUPPORT_START_ID); \
430 } \
431 } while (FALSE)
432
441#define PERF_DRIVER_BINDING_SUPPORT_END(ModuleHandle, ControllerHandle) \
442 do { \
443 if (LogPerformanceMeasurementEnabled (PERF_CORE_DB_SUPPORT)) { \
444 LogPerformanceMeasurement (ModuleHandle, NULL, NULL, (UINT64)(UINTN)ControllerHandle, MODULE_DB_SUPPORT_END_ID); \
445 } \
446 } while (FALSE)
447
456#define PERF_DRIVER_BINDING_START_BEGIN(ModuleHandle, ControllerHandle) \
457 do { \
458 if (LogPerformanceMeasurementEnabled (PERF_CORE_DB_START)) { \
459 LogPerformanceMeasurement (ModuleHandle, NULL, NULL, (UINT64)(UINTN)ControllerHandle, MODULE_DB_START_ID); \
460 } \
461 } while (FALSE)
462
471#define PERF_DRIVER_BINDING_START_END(ModuleHandle, ControllerHandle) \
472 do { \
473 if (LogPerformanceMeasurementEnabled (PERF_CORE_DB_START)) { \
474 LogPerformanceMeasurement (ModuleHandle, NULL, NULL, (UINT64)(UINTN)ControllerHandle, MODULE_DB_END_ID); \
475 } \
476 } while (FALSE)
477
486#define PERF_DRIVER_BINDING_STOP_BEGIN(ModuleHandle, ControllerHandle) \
487 do { \
488 if (LogPerformanceMeasurementEnabled (PERF_CORE_DB_STOP)) { \
489 LogPerformanceMeasurement (ModuleHandle, NULL, NULL, (UINT64)(UINTN)ControllerHandle, MODULE_DB_STOP_START_ID); \
490 } \
491 } while (FALSE)
492
501#define PERF_DRIVER_BINDING_STOP_END(ModuleHandle, ControllerHandle) \
502 do { \
503 if (LogPerformanceMeasurementEnabled (PERF_CORE_DB_STOP)) { \
504 LogPerformanceMeasurement (ModuleHandle, NULL, NULL, (UINT64)(UINTN)ControllerHandle, MODULE_DB_STOP_END_ID); \
505 } \
506 } while (FALSE)
507
517#define PERF_EVENT(EventString) \
518 do { \
519 if (LogPerformanceMeasurementEnabled (PERF_GENERAL_TYPE)) { \
520 LogPerformanceMeasurement (&gEfiCallerIdGuid, NULL, EventString , 0, PERF_EVENT_ID); \
521 } \
522 } while (FALSE)
523
533#define PERF_EVENT_SIGNAL_BEGIN(EventGuid) \
534 do { \
535 if (LogPerformanceMeasurementEnabled (PERF_GENERAL_TYPE)) { \
536 LogPerformanceMeasurement (&gEfiCallerIdGuid, EventGuid, __FUNCTION__ , 0, PERF_EVENTSIGNAL_START_ID); \
537 } \
538 } while (FALSE)
539
549#define PERF_EVENT_SIGNAL_END(EventGuid) \
550 do { \
551 if (LogPerformanceMeasurementEnabled (PERF_GENERAL_TYPE)) { \
552 LogPerformanceMeasurement (&gEfiCallerIdGuid, EventGuid, __FUNCTION__ , 0, PERF_EVENTSIGNAL_END_ID); \
553 } \
554 } while (FALSE)
555
565#define PERF_CALLBACK_BEGIN(TriggerGuid) \
566 do { \
567 if (LogPerformanceMeasurementEnabled (PERF_GENERAL_TYPE)) { \
568 LogPerformanceMeasurement (&gEfiCallerIdGuid, TriggerGuid, __FUNCTION__ , 0, PERF_CALLBACK_START_ID); \
569 } \
570 } while (FALSE)
571
581#define PERF_CALLBACK_END(TriggerGuid) \
582 do { \
583 if (LogPerformanceMeasurementEnabled (PERF_GENERAL_TYPE)) { \
584 LogPerformanceMeasurement (&gEfiCallerIdGuid, TriggerGuid, __FUNCTION__ , 0, PERF_CALLBACK_END_ID); \
585 } \
586 } while (FALSE)
587
596#define PERF_FUNCTION_BEGIN() \
597 do { \
598 if (LogPerformanceMeasurementEnabled (PERF_GENERAL_TYPE)) { \
599 LogPerformanceMeasurement (&gEfiCallerIdGuid, NULL, __FUNCTION__ , 0, PERF_FUNCTION_START_ID); \
600 } \
601 } while (FALSE)
602
611#define PERF_FUNCTION_END() \
612 do { \
613 if (LogPerformanceMeasurementEnabled (PERF_GENERAL_TYPE)) { \
614 LogPerformanceMeasurement (&gEfiCallerIdGuid, NULL, __FUNCTION__ , 0, PERF_FUNCTION_END_ID); \
615 } \
616 } while (FALSE)
617
626#define PERF_INMODULE_BEGIN(MeasurementString) \
627 do { \
628 if (LogPerformanceMeasurementEnabled (PERF_GENERAL_TYPE)) { \
629 LogPerformanceMeasurement (&gEfiCallerIdGuid, NULL, MeasurementString, 0, PERF_INMODULE_START_ID); \
630 } \
631 } while (FALSE)
632
641#define PERF_INMODULE_END(MeasurementString) \
642 do { \
643 if (LogPerformanceMeasurementEnabled (PERF_GENERAL_TYPE)) { \
644 LogPerformanceMeasurement (&gEfiCallerIdGuid, NULL, MeasurementString, 0, PERF_INMODULE_END_ID); \
645 } \
646 } while (FALSE)
647
657#define PERF_CROSSMODULE_BEGIN(MeasurementString) \
658 do { \
659 if (LogPerformanceMeasurementEnabled (PERF_GENERAL_TYPE)) { \
660 LogPerformanceMeasurement (&gEfiCallerIdGuid, NULL, MeasurementString, 0, PERF_CROSSMODULE_START_ID); \
661 } \
662 } while (FALSE)
663
673#define PERF_CROSSMODULE_END(MeasurementString) \
674 do { \
675 if (LogPerformanceMeasurementEnabled (PERF_GENERAL_TYPE)) { \
676 LogPerformanceMeasurement (&gEfiCallerIdGuid, NULL, MeasurementString, 0, PERF_CROSSMODULE_END_ID); \
677 } \
678 } while (FALSE)
679
687#define PERF_END(Handle, Token, Module, TimeStamp) \
688 do { \
689 if (PerformanceMeasurementEnabled ()) { \
690 EndPerformanceMeasurement (Handle, Token, Module, TimeStamp); \
691 } \
692 } while (FALSE)
693
701#define PERF_START(Handle, Token, Module, TimeStamp) \
702 do { \
703 if (PerformanceMeasurementEnabled ()) { \
704 StartPerformanceMeasurement (Handle, Token, Module, TimeStamp); \
705 } \
706 } while (FALSE)
707
715#define PERF_END_EX(Handle, Token, Module, TimeStamp, Identifier) \
716 do { \
717 if (PerformanceMeasurementEnabled ()) { \
718 EndPerformanceMeasurementEx (Handle, Token, Module, TimeStamp, Identifier); \
719 } \
720 } while (FALSE)
721
729#define PERF_START_EX(Handle, Token, Module, TimeStamp, Identifier) \
730 do { \
731 if (PerformanceMeasurementEnabled ()) { \
732 StartPerformanceMeasurementEx (Handle, Token, Module, TimeStamp, Identifier); \
733 } \
734 } while (FALSE)
735
744#define PERF_CODE_BEGIN() do { if (PerformanceMeasurementEnabled ()) { UINT8 __PerformanceCodeLocal
745
754#define PERF_CODE_END() __PerformanceCodeLocal = 0; __PerformanceCodeLocal++; } } while (FALSE)
755
766#define PERF_CODE(Expression) \
767 PERF_CODE_BEGIN (); \
768 Expression \
769 PERF_CODE_END ()
770
771
772#endif
char CHAR8
Definition ProcessorBind.h:109
UINT64 UINTN
Definition ProcessorBind.h:118
#define EFIAPI
Definition ProcessorBind.h:172
unsigned int UINT32
Definition ProcessorBind.h:102
#define CONST
Definition Base.h:327
#define IN
Definition Base.h:347
UINTN RETURN_STATUS
Definition Base.h:965
#define OUT
Definition Base.h:352
#define OPTIONAL
Definition Base.h:358
RETURN_STATUS EFIAPI EndPerformanceMeasurement(IN CONST VOID *Handle, OPTIONAL IN CONST CHAR8 *Token, OPTIONAL IN CONST CHAR8 *Module, OPTIONAL IN UINT64 TimeStamp)
RETURN_STATUS EFIAPI StartPerformanceMeasurementEx(IN CONST VOID *Handle, OPTIONAL IN CONST CHAR8 *Token, OPTIONAL IN CONST CHAR8 *Module, OPTIONAL IN UINT64 TimeStamp, IN UINT32 Identifier)
UINTN EFIAPI GetPerformanceMeasurement(IN UINTN LogEntryKey, OUT CONST VOID **Handle, OUT CONST CHAR8 **Token, OUT CONST CHAR8 **Module, OUT UINT64 *StartTimeStamp, OUT UINT64 *EndTimeStamp)
RETURN_STATUS EFIAPI LogPerformanceMeasurement(IN CONST VOID *CallerIdentifier, OPTIONAL IN CONST VOID *Guid, OPTIONAL IN CONST CHAR8 *String, OPTIONAL IN UINT64 Address, OPTIONAL IN UINT32 Identifier)
BOOLEAN EFIAPI LogPerformanceMeasurementEnabled(IN CONST UINTN Type)
RETURN_STATUS EFIAPI StartPerformanceMeasurement(IN CONST VOID *Handle, OPTIONAL IN CONST CHAR8 *Token, OPTIONAL IN CONST CHAR8 *Module, OPTIONAL IN UINT64 TimeStamp)
BOOLEAN EFIAPI PerformanceMeasurementEnabled(VOID)
UINTN EFIAPI GetPerformanceMeasurementEx(IN UINTN LogEntryKey, OUT CONST VOID **Handle, OUT CONST CHAR8 **Token, OUT CONST CHAR8 **Module, OUT UINT64 *StartTimeStamp, OUT UINT64 *EndTimeStamp, OUT UINT32 *Identifier)
RETURN_STATUS EFIAPI EndPerformanceMeasurementEx(IN CONST VOID *Handle, OPTIONAL IN CONST CHAR8 *Token, OPTIONAL IN CONST CHAR8 *Module, OPTIONAL IN UINT64 TimeStamp, IN UINT32 Identifier)
#define VOID
Definition acefi.h:190
ACPI_PHYSICAL_ADDRESS Address
Definition acpixf.h:637
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn BOOLEAN Physical UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE ACPI_HANDLE ACPI_HANDLE *OutHandle ACPI_HANDLE *OutHandle void *Context void *Context ACPI_EVENT_HANDLER Handler UINT32 UINT32 Type
Definition acpixf.h:894
unsigned char BOOLEAN
Definition actypes.h:235
COMPILER_DEPENDENT_UINT64 UINT64
Definition actypes.h:239