Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MdePkg: Add FdtLib gmock support #62

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import os
import pathlib
import shutil
import stat
import timeit
from edk2toolext.environment import version_aggregator
from edk2toolext.environment.plugin_manager import PluginManager
Expand Down Expand Up @@ -628,7 +629,7 @@ def _remove_readonly(func, path, _):
"""
Private function to attempt to change permissions on file/folder being deleted.
"""
os.chmod(path, os.stat.S_IWRITE)
os.chmod(path, stat.S_IWRITE)
func(path)

for _ in range(3): # retry up to 3 times
Expand Down
8 changes: 8 additions & 0 deletions MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystem.c
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,14 @@ RuntimeServiceResetSystem (
mResetNotifyDepth
));

if ((ResetData != NULL) && (DataSize != 0)) {
DEBUG ((
DEBUG_INFO,
"DXE ResetSystem2: ResetData: %s\n",
ResetData
));
}

if (mResetNotifyDepth <= MAX_RESET_NOTIFY_DEPTH) {
if (!EfiAtRuntime ()) {
//
Expand Down
1 change: 1 addition & 0 deletions MdePkg/Include/Guid/FileInfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ typedef struct {
UINT64 Attribute;
///
/// The Null-terminated name of the file.
/// For a root directory, the name is an empty string.
///
CHAR16 FileName[1];
} EFI_FILE_INFO;
Expand Down
15 changes: 15 additions & 0 deletions MdePkg/Library/BaseCpuLibNull/BaseCpuLibNull.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,18 @@ CpuFlushTlb (
)
{
}

/**
Determine if the standard CPU signature is "AuthenticAMD".

@retval TRUE The CPU signature matches.
@retval FALSE The CPU signature does not match.
**/
BOOLEAN
EFIAPI
StandardSignatureIsAuthenticAMD (
VOID
)
{
return FALSE;
}
1 change: 1 addition & 0 deletions MdePkg/Test/MdePkgHostTest.dsc
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,4 @@
MdePkg/Test/Mock/Library/GoogleTest/MockUefiRuntimeServicesTableLib/MockUefiRuntimeServicesTableLib.inf
MdePkg/Test/Mock/Library/GoogleTest/MockPeiServicesLib/MockPeiServicesLib.inf
MdePkg/Test/Mock/Library/GoogleTest/MockHobLib/MockHobLib.inf
MdePkg/Test/Mock/Library/GoogleTest/MockFdtLib/MockFdtLib.inf
164 changes: 164 additions & 0 deletions MdePkg/Test/Mock/Include/GoogleTest/Library/MockFdtLib.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
/** @file
Google Test mocks for FdtLib

Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
Copyright (c) 2023, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/

#ifndef MOCK_FDT_LIB_H_
#define MOCK_FDT_LIB_H_

#include <Library/GoogleTestLib.h>
#include <Library/FunctionMockLib.h>
extern "C" {
#include <Base.h>
#include <Library/FdtLib.h>
}

struct MockFdtLib {
MOCK_INTERFACE_DECLARATION (MockFdtLib);

MOCK_FUNCTION_DECLARATION (
UINT16,
Fdt16ToCpu,
(IN UINT16 Value)
);
MOCK_FUNCTION_DECLARATION (
UINT16,
CpuToFdt16,
(IN UINT16 Value)
);
MOCK_FUNCTION_DECLARATION (
UINT32,
Fdt32ToCpu,
(IN UINT32 Value)
);
MOCK_FUNCTION_DECLARATION (
UINT32,
CpuToFdt32,
(IN UINT32 Value)
);
MOCK_FUNCTION_DECLARATION (
UINT64,
Fdt64ToCpu,
(IN UINT64 Value)
);
MOCK_FUNCTION_DECLARATION (
UINT64,
CpuToFdt64,
(IN UINT64 Value)
);
MOCK_FUNCTION_DECLARATION (
INT32,
FdtCheckHeader,
(IN CONST VOID *Fdt)
);
MOCK_FUNCTION_DECLARATION (
INT32,
FdtCreateEmptyTree,
(IN VOID *Buffer,
IN UINT32 BufferSize)
);
MOCK_FUNCTION_DECLARATION (
INT32,
FdtNextNode,
(IN CONST VOID *Fdt,
IN INT32 Offset,
IN INT32 *Depth)
);
MOCK_FUNCTION_DECLARATION (
INT32,
FdtFirstSubnode,
(IN CONST VOID *Fdt,
IN INT32 Offset)
);
MOCK_FUNCTION_DECLARATION (
INT32,
FdtNextSubnode,
(IN CONST VOID *Fdt,
IN INT32 Offset)
);
MOCK_FUNCTION_DECLARATION (
INT32,
FdtSubnodeOffsetNameLen,
(IN CONST VOID *Fdt,
IN INT32 ParentOffset,
IN CONST CHAR8 *Name,
IN INT32 NameLength)
);
MOCK_FUNCTION_DECLARATION (
INT32,
FdtNodeOffsetByPropValue,
(IN CONST VOID *Fdt,
IN INT32 StartOffset,
IN CONST CHAR8 *PropertyName,
IN CONST VOID *PropertyValue,
IN INT32 PropertyLength)
);
MOCK_FUNCTION_DECLARATION (
CONST FDT_PROPERTY *,
FdtGetProperty,
(IN CONST VOID *Fdt,
IN INT32 NodeOffset,
IN CONST CHAR8 *Name,
IN INT32 *Length)
);
MOCK_FUNCTION_DECLARATION (
INT32,
FdtFirstPropertyOffset,
(IN CONST VOID *Fdt,
IN INT32 NodeOffset)
);
MOCK_FUNCTION_DECLARATION (
INT32,
FdtNextPropertyOffset,
(IN CONST VOID *Fdt,
IN INT32 NodeOffset)
);
MOCK_FUNCTION_DECLARATION (
CONST FDT_PROPERTY *,
FdtGetPropertyByOffset,
(IN CONST VOID *Fdt,
IN INT32 Offset,
IN INT32 *Length)
);
MOCK_FUNCTION_DECLARATION (
CONST CHAR8 *,
FdtGetString,
(IN CONST VOID *Fdt,
IN INT32 StrOffset,
IN INT32 *Length OPTIONAL)
);
MOCK_FUNCTION_DECLARATION (
INT32,
FdtAddSubnode,
(IN VOID *Fdt,
IN INT32 ParentOffset,
IN CONST CHAR8 *Name)
);
MOCK_FUNCTION_DECLARATION (
INT32,
FdtSetProp,
(IN VOID *Fdt,
IN INT32 NodeOffset,
IN CONST CHAR8 *Name,
IN CONST VOID *Value,
IN UINT32 Length)
);
MOCK_FUNCTION_DECLARATION (
CONST CHAR8 *,
FdtGetName,
(IN VOID *Fdt,
IN INT32 NodeOffset,
IN INT32 *Length)
);
MOCK_FUNCTION_DECLARATION (
INT32,
FdtNodeDepth,
(IN CONST VOID *Fdt,
IN INT32 NodeOffset)
);
};

#endif
34 changes: 34 additions & 0 deletions MdePkg/Test/Mock/Library/GoogleTest/MockFdtLib/MockFdtLib.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/** @file
Google Test mocks for FdtLib

Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
Copyright (c) 2023, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/

#include <GoogleTest/Library/MockFdtLib.h>

MOCK_INTERFACE_DEFINITION (MockFdtLib);

MOCK_FUNCTION_DEFINITION (MockFdtLib, Fdt16ToCpu, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockFdtLib, CpuToFdt16, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockFdtLib, Fdt32ToCpu, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockFdtLib, CpuToFdt32, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockFdtLib, Fdt64ToCpu, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockFdtLib, CpuToFdt64, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockFdtLib, FdtCheckHeader, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockFdtLib, FdtCreateEmptyTree, 2, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockFdtLib, FdtNextNode, 3, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockFdtLib, FdtFirstSubnode, 2, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockFdtLib, FdtNextSubnode, 2, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockFdtLib, FdtSubnodeOffsetNameLen, 4, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockFdtLib, FdtNodeOffsetByPropValue, 5, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockFdtLib, FdtGetProperty, 4, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockFdtLib, FdtFirstPropertyOffset, 2, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockFdtLib, FdtNextPropertyOffset, 2, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockFdtLib, FdtGetPropertyByOffset, 3, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockFdtLib, FdtGetString, 3, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockFdtLib, FdtAddSubnode, 3, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockFdtLib, FdtSetProp, 5, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockFdtLib, FdtGetName, 3, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockFdtLib, FdtNodeDepth, 2, EFIAPI);
28 changes: 28 additions & 0 deletions MdePkg/Test/Mock/Library/GoogleTest/MockFdtLib/MockFdtLib.inf
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
## @file
# Google Test mocks for FdtLib
#
# Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# Copyright (c) 2023, Intel Corporation. All rights reserved.
# SPDX-License-Identifier: BSD-2-Clause-Patent
##

[Defines]
INF_VERSION = 0x00010005
BASE_NAME = MockFdtLib
FILE_GUID = 0f5471bc-fc2c-4cf4-b9f7-c1396d32831c
MODULE_TYPE = HOST_APPLICATION
VERSION_STRING = 1.0
LIBRARY_CLASS = FdtLib

[Sources]
MockFdtLib.cpp

[Packages]
MdePkg/MdePkg.dec
UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec

[LibraryClasses]
GoogleTestLib

[BuildOptions]
MSFT:*_*_*_CC_FLAGS = /EHsc /bigobj
37 changes: 7 additions & 30 deletions StandaloneMmPkg/Core/Dependency.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,6 @@

#include "StandaloneMmCore.h"

///
/// EFI_DEP_REPLACE_TRUE - Used to dynamically patch the dependency expression
/// to save time. A EFI_DEP_PUSH is evaluated one an
/// replaced with EFI_DEP_REPLACE_TRUE. If PI spec's Vol 2
/// Driver Execution Environment Core Interface use 0xff
/// as new DEPEX opcode. EFI_DEP_REPLACE_TRUE should be
/// defined to a new value that is not conflicting with PI spec.
///
#define EFI_DEP_REPLACE_TRUE 0xff

///
/// Define the initial size of the dependency expression evaluation stack
///
Expand Down Expand Up @@ -170,12 +160,12 @@ MmIsSchedulable (
IN EFI_MM_DRIVER_ENTRY *DriverEntry
)
{
EFI_STATUS Status;
UINT8 *Iterator;
BOOLEAN Operator;
BOOLEAN Operator2;
EFI_GUID DriverGuid;
VOID *Interface;
EFI_STATUS Status;
CONST UINT8 *Iterator;
BOOLEAN Operator;
BOOLEAN Operator2;
EFI_GUID DriverGuid;
VOID *Interface;

Operator = FALSE;
Operator2 = FALSE;
Expand Down Expand Up @@ -253,8 +243,7 @@ MmIsSchedulable (
Status = PushBool (FALSE);
} else {
DEBUG ((DEBUG_DISPATCH, " PUSH GUID(%g) = TRUE\n", &DriverGuid));
*Iterator = EFI_DEP_REPLACE_TRUE;
Status = PushBool (TRUE);
Status = PushBool (TRUE);
}

if (EFI_ERROR (Status)) {
Expand Down Expand Up @@ -356,18 +345,6 @@ MmIsSchedulable (
DEBUG ((DEBUG_DISPATCH, " RESULT = %a\n", Operator ? "TRUE" : "FALSE"));
return Operator;

case EFI_DEP_REPLACE_TRUE:
CopyMem (&DriverGuid, Iterator + 1, sizeof (EFI_GUID));
DEBUG ((DEBUG_DISPATCH, " PUSH GUID(%g) = TRUE\n", &DriverGuid));
Status = PushBool (TRUE);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));
return FALSE;
}

Iterator += sizeof (EFI_GUID);
break;

default:
DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unknown opcode)\n"));
goto Done;
Expand Down