Skip to content

Commit 7b68a38

Browse files
committed
MdePkg: Add MockSynchronizationLib and MockSmmSxDispatch2
Signed-off-by: TsunFeng <[email protected]>
1 parent 28653a1 commit 7b68a38

File tree

5 files changed

+226
-0
lines changed

5 files changed

+226
-0
lines changed

MdePkg/Test/MdePkgHostTest.dsc

+1
Original file line numberDiff line numberDiff line change
@@ -53,5 +53,6 @@
5353
MdePkg/Test/Mock/Library/GoogleTest/MockPciSegmentLib/MockPciSegmentLib.inf
5454
MdePkg/Test/Mock/Library/GoogleTest/MockReportStatusCodeLib/MockReportStatusCodeLib.inf
5555
MdePkg/Test/Mock/Library/GoogleTest/MockSafeIntLib/MockSafeIntLib.inf
56+
MdePkg/Test/Mock/Library/GoogleTest/MockSynchronizationLib/MockSynchronizationLib.inf
5657

5758
MdePkg/Library/StackCheckLibNull/StackCheckLibNullHostApplication.inf
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
/** @file MockSynchronizationLib.h
2+
Google Test mocks for the synchronization Library
3+
4+
Copyright (c) Microsoft Corporation.
5+
SPDX-License-Identifier: BSD-2-Clause-Patent
6+
**/
7+
8+
#ifndef MOCK_SYNCHRONIZATION_LIB_H_
9+
#define MOCK_SYNCHRONIZATION_LIB_H_
10+
11+
#include <Library/GoogleTestLib.h>
12+
#include <Library/FunctionMockLib.h>
13+
14+
extern "C" {
15+
#include <Uefi.h>
16+
#include <Library/SynchronizationLib.h>
17+
}
18+
19+
struct MockSynchronizationLib {
20+
MOCK_INTERFACE_DECLARATION (MockSynchronizationLib);
21+
22+
MOCK_FUNCTION_DECLARATION (
23+
UINTN,
24+
GetSpinLockProperties,
25+
(
26+
)
27+
);
28+
29+
MOCK_FUNCTION_DECLARATION (
30+
SPIN_LOCK *,
31+
InitializeSpinLock,
32+
(
33+
OUT SPIN_LOCK *SpinLock
34+
)
35+
);
36+
37+
MOCK_FUNCTION_DECLARATION (
38+
SPIN_LOCK *,
39+
AcquireSpinLock,
40+
(
41+
IN OUT SPIN_LOCK *SpinLock
42+
)
43+
);
44+
45+
MOCK_FUNCTION_DECLARATION (
46+
BOOLEAN,
47+
AcquireSpinLockOrFail,
48+
(
49+
IN OUT SPIN_LOCK *SpinLock
50+
)
51+
);
52+
53+
MOCK_FUNCTION_DECLARATION (
54+
SPIN_LOCK *,
55+
ReleaseSpinLock,
56+
(
57+
IN OUT SPIN_LOCK *SpinLock
58+
)
59+
);
60+
61+
MOCK_FUNCTION_DECLARATION (
62+
UINT32,
63+
InterlockedIncrement,
64+
(
65+
IN volatile UINT32 *Value
66+
)
67+
);
68+
69+
MOCK_FUNCTION_DECLARATION (
70+
UINT32,
71+
InterlockedDecrement,
72+
(
73+
IN volatile UINT32 *Value
74+
)
75+
);
76+
77+
MOCK_FUNCTION_DECLARATION (
78+
UINT16,
79+
InterlockedCompareExchange16,
80+
(
81+
IN OUT volatile UINT16 *Value,
82+
IN UINT16 CompareValue,
83+
IN UINT16 ExchangeValue
84+
)
85+
);
86+
87+
MOCK_FUNCTION_DECLARATION (
88+
UINT32,
89+
InterlockedCompareExchange32,
90+
(
91+
IN OUT volatile UINT32 *Value,
92+
IN UINT32 CompareValue,
93+
IN UINT32 ExchangeValue
94+
)
95+
);
96+
97+
MOCK_FUNCTION_DECLARATION (
98+
UINT64,
99+
InterlockedCompareExchange64,
100+
(
101+
IN OUT volatile UINT64 *Value,
102+
IN UINT64 CompareValue,
103+
IN UINT64 ExchangeValue
104+
)
105+
);
106+
107+
MOCK_FUNCTION_DECLARATION (
108+
VOID *,
109+
InterlockedCompareExchangePointer,
110+
(
111+
IN OUT VOID *volatile *Value,
112+
IN VOID *CompareValue,
113+
IN VOID *ExchangeValue
114+
)
115+
);
116+
};
117+
118+
#endif //MOCK_SYNCHRONIZATION_LIB_H_
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/** @file MockSmmSxDispatch2.h
2+
This file declares a mock of SMM Software Dispatch Protocol
3+
4+
Copyright (c) Microsoft Corporation.
5+
SPDX-License-Identifier: BSD-2-Clause-Patent
6+
**/
7+
8+
#ifndef MOCK_SMM_SX_DISPATCH2_H_
9+
#define MOCK_SMM_SX_DISPATCH2_H_
10+
11+
#include <Library/GoogleTestLib.h>
12+
#include <Library/FunctionMockLib.h>
13+
14+
extern "C" {
15+
#include <Uefi.h>
16+
#include <Protocol/SmmSxDispatch2.h>
17+
}
18+
19+
// Declarations to handle usage of the EFI_SMM_SX_DISPATCH2_PROTOCOL
20+
struct MockEfiSmmSxDispatch2Protocol {
21+
MOCK_INTERFACE_DECLARATION (MockEfiSmmSxDispatch2Protocol);
22+
23+
MOCK_FUNCTION_DECLARATION (
24+
EFI_STATUS,
25+
Register,
26+
(
27+
IN CONST EFI_MM_SX_DISPATCH_PROTOCOL *This,
28+
IN EFI_MM_HANDLER_ENTRY_POINT DispatchFunction,
29+
IN CONST EFI_MM_SX_REGISTER_CONTEXT *RegisterContext,
30+
OUT EFI_HANDLE *DispatchHandle)
31+
);
32+
33+
MOCK_FUNCTION_DECLARATION (
34+
EFI_STATUS,
35+
UnRegister,
36+
(
37+
IN CONST EFI_MM_SX_DISPATCH_PROTOCOL *This,
38+
IN EFI_HANDLE DispatchHandle)
39+
);
40+
};
41+
42+
MOCK_INTERFACE_DEFINITION (MockEfiSmmSxDispatch2Protocol);
43+
MOCK_FUNCTION_DEFINITION (MockEfiSmmSxDispatch2Protocol, Register, 4, EFIAPI);
44+
MOCK_FUNCTION_DEFINITION (MockEfiSmmSxDispatch2Protocol, UnRegister, 2, EFIAPI);
45+
46+
#define MOCK_EFI_SMM_SX_DISPATCH2_PROTOCOL_INSTANCE(NAME) \
47+
EFI_SMM_SX_DISPATCH2_PROTOCOL NAME##_INSTANCE = { \
48+
Register, \
49+
UnRegister }; \
50+
EFI_SMM_SX_DISPATCH2_PROTOCOL *NAME = &NAME##_INSTANCE;
51+
52+
#endif // MOCK_SMM_SW_DISPATCH2_H_
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/** @file MockSynchronizationLib.cpp
2+
Google Test mocks for SynchronizationLib
3+
4+
Copyright (c) Microsoft Corporation.
5+
SPDX-License-Identifier: BSD-2-Clause-Patent
6+
**/
7+
8+
#include <GoogleTest/Library/MockSynchronizationLib.h>
9+
10+
MOCK_INTERFACE_DEFINITION (MockSynchronizationLib);
11+
12+
MOCK_FUNCTION_DEFINITION (MockSynchronizationLib, GetSpinLockProperties, 0, EFIAPI);
13+
MOCK_FUNCTION_DEFINITION (MockSynchronizationLib, InitializeSpinLock, 1, EFIAPI);
14+
MOCK_FUNCTION_DEFINITION (MockSynchronizationLib, AcquireSpinLock, 1, EFIAPI);
15+
MOCK_FUNCTION_DEFINITION (MockSynchronizationLib, AcquireSpinLockOrFail, 1, EFIAPI);
16+
MOCK_FUNCTION_DEFINITION (MockSynchronizationLib, ReleaseSpinLock, 1, EFIAPI);
17+
MOCK_FUNCTION_DEFINITION (MockSynchronizationLib, InterlockedIncrement, 1, EFIAPI);
18+
MOCK_FUNCTION_DEFINITION (MockSynchronizationLib, InterlockedDecrement, 1, EFIAPI);
19+
MOCK_FUNCTION_DEFINITION (MockSynchronizationLib, InterlockedCompareExchange16, 3, EFIAPI);
20+
MOCK_FUNCTION_DEFINITION (MockSynchronizationLib, InterlockedCompareExchange32, 3, EFIAPI);
21+
MOCK_FUNCTION_DEFINITION (MockSynchronizationLib, InterlockedCompareExchange64, 3, EFIAPI);
22+
MOCK_FUNCTION_DEFINITION (MockSynchronizationLib, InterlockedCompareExchangePointer, 3, EFIAPI);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
## @file MockSynchronizationLib.inf
2+
# Google Test mocks for SynchronizationLib
3+
#
4+
# Copyright (c) Microsoft Corporation.
5+
# SPDX-License-Identifier: BSD-2-Clause-Patent
6+
##
7+
8+
[Defines]
9+
INF_VERSION = 0x00010005
10+
BASE_NAME = MockSynchronizationLib
11+
FILE_GUID = C041130D-BEFC-41C7-AD8A-438EEE14AE3F
12+
MODULE_TYPE = HOST_APPLICATION
13+
VERSION_STRING = 1.0
14+
LIBRARY_CLASS = SynchronizationLib
15+
16+
#
17+
# The following information is for reference only and not required by the build tools.
18+
#
19+
# VALID_ARCHITECTURES = IA32 X64
20+
#
21+
22+
[Sources]
23+
MockSynchronizationLib.cpp
24+
25+
[Packages]
26+
MdePkg/MdePkg.dec
27+
UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec
28+
29+
[LibraryClasses]
30+
GoogleTestLib
31+
32+
[BuildOptions]
33+
MSFT:*_*_*_CC_FLAGS = /EHsc

0 commit comments

Comments
 (0)