TianoCore EDK2 master
Loading...
Searching...
No Matches
SmmMpPerf.h
Go to the documentation of this file.
1
10#ifndef MP_PERF_H_
11#define MP_PERF_H_
12
13//
14// The list of all MP procedures that need to be perf-logged.
15//
16#define SMM_MP_PERF_PROCEDURE_LIST(_) \
17 _(InitializeSmm), \
18 _(SmmRendezvousEntry), \
19 _(PlatformValidSmi), \
20 _(SmmRendezvousExit), \
21 _(SmmMpProcedureMax) // Add new entries above this line
22
23//
24// To perf-log MP procedures, call MpPerfBegin()/MpPerfEnd() with CpuIndex
25// and SMM_MP_PERF_PROCEDURE_ID with entry name defined in the SMM_MP_PERF_PROCEDURE_LIST.
26//
27#define SMM_MP_PERF_PROCEDURE_ID(procedure) SmmMpProcedureId ## procedure
28enum {
29 SMM_MP_PERF_PROCEDURE_LIST (SMM_MP_PERF_PROCEDURE_ID)
30};
31
32typedef struct {
33 UINT64 Begin[SMM_MP_PERF_PROCEDURE_ID (SmmMpProcedureMax)];
34 UINT64 End[SMM_MP_PERF_PROCEDURE_ID (SmmMpProcedureMax)];
36
42VOID
44 UINTN NumberofCpus
45 );
46
53VOID
55 UINTN NumberofCpus,
56 UINTN BspIndex
57 );
58
65VOID
67 IN UINTN CpuIndex,
68 IN UINTN MpProcedureId
69 );
70
77VOID
79 IN UINTN CpuIndex,
80 IN UINTN MpProcedureId
81 );
82
83#endif
UINT64 UINTN
#define IN
Definition: Base.h:279
VOID MpPerfBegin(IN UINTN CpuIndex, IN UINTN MpProcedureId)
Definition: SmmMpPerf.c:78
VOID MpPerfEnd(IN UINTN CpuIndex, IN UINTN MpProcedureId)
Definition: SmmMpPerf.c:93
VOID MigrateMpPerf(UINTN NumberofCpus, UINTN BspIndex)
Definition: SmmMpPerf.c:44
VOID InitializeMpPerf(UINTN NumberofCpus)
Definition: SmmMpPerf.c:29