mirror of
https://github.com/acidanthera/audk.git
synced 2025-04-07 19:45:07 +02:00
MdePkg: UefiDevicePathLib: Support UefiDevicePathLib under StandaloneMm
This change added an instance of UefiDevicePathLib for StandaloneMm. It abstracts DevicePathFromHandle function into different files for Standalone MM and other instances to avoid linking gBS into MM_STANDALONE drivers. Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Zhiguang Liu <zhiguang.liu@intel.com> Signed-off-by: Kun Qin <kun.q@outlook.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
This commit is contained in:
parent
1f0fa9187b
commit
14a746bb6a
@ -806,39 +806,6 @@ UefiDevicePathLibIsDevicePathMultiInstance (
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Retrieves the device path protocol from a handle.
|
||||
|
||||
This function returns the device path protocol from the handle specified by Handle.
|
||||
If Handle is NULL or Handle does not contain a device path protocol, then NULL
|
||||
is returned.
|
||||
|
||||
@param Handle The handle from which to retrieve the device
|
||||
path protocol.
|
||||
|
||||
@return The device path protocol from the handle specified by Handle.
|
||||
|
||||
**/
|
||||
EFI_DEVICE_PATH_PROTOCOL *
|
||||
EFIAPI
|
||||
DevicePathFromHandle (
|
||||
IN EFI_HANDLE Handle
|
||||
)
|
||||
{
|
||||
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||
EFI_STATUS Status;
|
||||
|
||||
Status = gBS->HandleProtocol (
|
||||
Handle,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
(VOID *) &DevicePath
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
DevicePath = NULL;
|
||||
}
|
||||
return DevicePath;
|
||||
}
|
||||
|
||||
/**
|
||||
Allocates a device path for a file and appends it to an existing device path.
|
||||
|
||||
|
51
MdePkg/Library/UefiDevicePathLib/DevicePathUtilitiesDxeSmm.c
Normal file
51
MdePkg/Library/UefiDevicePathLib/DevicePathUtilitiesDxeSmm.c
Normal file
@ -0,0 +1,51 @@
|
||||
/** @file
|
||||
Device Path services. The thing to remember is device paths are built out of
|
||||
nodes. The device path is terminated by an end node that is length
|
||||
sizeof(EFI_DEVICE_PATH_PROTOCOL). That would be why there is sizeof(EFI_DEVICE_PATH_PROTOCOL)
|
||||
all over this file.
|
||||
|
||||
The only place where multi-instance device paths are supported is in
|
||||
environment varibles. Multi-instance device paths should never be placed
|
||||
on a Handle.
|
||||
|
||||
Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) Microsoft Corporation.
|
||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
|
||||
**/
|
||||
|
||||
#include "UefiDevicePathLib.h"
|
||||
|
||||
|
||||
/**
|
||||
Retrieves the device path protocol from a handle.
|
||||
|
||||
This function returns the device path protocol from the handle specified by Handle.
|
||||
If Handle is NULL or Handle does not contain a device path protocol, then NULL
|
||||
is returned.
|
||||
|
||||
@param Handle The handle from which to retrieve the device
|
||||
path protocol.
|
||||
|
||||
@return The device path protocol from the handle specified by Handle.
|
||||
|
||||
**/
|
||||
EFI_DEVICE_PATH_PROTOCOL *
|
||||
EFIAPI
|
||||
DevicePathFromHandle (
|
||||
IN EFI_HANDLE Handle
|
||||
)
|
||||
{
|
||||
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||
EFI_STATUS Status;
|
||||
|
||||
Status = gBS->HandleProtocol (
|
||||
Handle,
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
(VOID *) &DevicePath
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
DevicePath = NULL;
|
||||
}
|
||||
return DevicePath;
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
/** @file
|
||||
Device Path services. The thing to remember is device paths are built out of
|
||||
nodes. The device path is terminated by an end node that is length
|
||||
sizeof(EFI_DEVICE_PATH_PROTOCOL). That would be why there is sizeof(EFI_DEVICE_PATH_PROTOCOL)
|
||||
all over this file.
|
||||
|
||||
The only place where multi-instance device paths are supported is in
|
||||
environment varibles. Multi-instance device paths should never be placed
|
||||
on a Handle.
|
||||
|
||||
Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) Microsoft Corporation.
|
||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
|
||||
**/
|
||||
|
||||
#include "UefiDevicePathLib.h"
|
||||
|
||||
|
||||
/**
|
||||
Retrieves the device path protocol from a handle.
|
||||
|
||||
This function returns the device path protocol from the handle specified by Handle.
|
||||
If Handle is NULL or Handle does not contain a device path protocol, then NULL
|
||||
is returned.
|
||||
|
||||
@param Handle The handle from which to retrieve the device
|
||||
path protocol.
|
||||
|
||||
@return The device path protocol from the handle specified by Handle.
|
||||
|
||||
**/
|
||||
EFI_DEVICE_PATH_PROTOCOL *
|
||||
EFIAPI
|
||||
DevicePathFromHandle (
|
||||
IN EFI_HANDLE Handle
|
||||
)
|
||||
{
|
||||
return NULL;
|
||||
}
|
@ -26,6 +26,7 @@
|
||||
|
||||
[Sources]
|
||||
DevicePathUtilities.c
|
||||
DevicePathUtilitiesDxeSmm.c
|
||||
DevicePathToText.c
|
||||
DevicePathFromText.c
|
||||
UefiDevicePathLib.c
|
||||
|
@ -29,6 +29,7 @@
|
||||
|
||||
[Sources]
|
||||
DevicePathUtilities.c
|
||||
DevicePathUtilitiesDxeSmm.c
|
||||
DevicePathToText.c
|
||||
DevicePathFromText.c
|
||||
UefiDevicePathLibOptionalDevicePathProtocol.c
|
||||
|
@ -0,0 +1,75 @@
|
||||
## @file
|
||||
# Instance of Device Path Library based on Memory Allocation Library.
|
||||
#
|
||||
# Device Path Library that layers on top of the Memory Allocation Library.
|
||||
#
|
||||
# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
|
||||
# Copyright (c) Microsoft Corporation.
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
#
|
||||
#
|
||||
##
|
||||
|
||||
[Defines]
|
||||
INF_VERSION = 0x00010005
|
||||
BASE_NAME = UefiDevicePathLib
|
||||
MODULE_UNI_FILE = UefiDevicePathLib.uni
|
||||
FILE_GUID = D8E58437-44D3-4154-B7A7-EB794923EF12
|
||||
MODULE_TYPE = MM_STANDALONE
|
||||
PI_SPECIFICATION_VERSION = 0x00010032
|
||||
VERSION_STRING = 1.0
|
||||
LIBRARY_CLASS = DevicePathLib | MM_STANDALONE MM_CORE_STANDALONE
|
||||
|
||||
|
||||
#
|
||||
# VALID_ARCHITECTURES = IA32 X64 EBC
|
||||
#
|
||||
|
||||
[Sources]
|
||||
DevicePathUtilities.c
|
||||
DevicePathUtilitiesStandaloneMm.c
|
||||
DevicePathToText.c
|
||||
DevicePathFromText.c
|
||||
UefiDevicePathLib.c
|
||||
UefiDevicePathLib.h
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
|
||||
[LibraryClasses]
|
||||
BaseLib
|
||||
MemoryAllocationLib
|
||||
DebugLib
|
||||
BaseMemoryLib
|
||||
PcdLib
|
||||
PrintLib
|
||||
|
||||
[Guids]
|
||||
## SOMETIMES_CONSUMES ## GUID
|
||||
gEfiVTUTF8Guid
|
||||
## SOMETIMES_CONSUMES ## GUID
|
||||
gEfiVT100Guid
|
||||
## SOMETIMES_CONSUMES ## GUID
|
||||
gEfiVT100PlusGuid
|
||||
## SOMETIMES_CONSUMES ## GUID
|
||||
gEfiPcAnsiGuid
|
||||
## SOMETIMES_CONSUMES ## GUID
|
||||
gEfiUartDevicePathGuid
|
||||
## SOMETIMES_CONSUMES ## GUID
|
||||
gEfiSasDevicePathGuid
|
||||
## SOMETIMES_CONSUMES ## GUID
|
||||
gEfiVirtualDiskGuid
|
||||
## SOMETIMES_CONSUMES ## GUID
|
||||
gEfiVirtualCdGuid
|
||||
## SOMETIMES_CONSUMES ## GUID
|
||||
gEfiPersistentVirtualDiskGuid
|
||||
## SOMETIMES_CONSUMES ## GUID
|
||||
gEfiPersistentVirtualCdGuid
|
||||
|
||||
[Protocols]
|
||||
gEfiDevicePathProtocolGuid ## SOMETIMES_CONSUMES
|
||||
gEfiDebugPortProtocolGuid ## UNDEFINED
|
||||
|
||||
[Pcd]
|
||||
gEfiMdePkgTokenSpaceGuid.PcdMaximumDevicePathNodeCount ## SOMETIMES_CONSUMES
|
@ -109,6 +109,7 @@
|
||||
MdePkg/Library/UefiDebugLibDebugPortProtocol/UefiDebugLibDebugPortProtocol.inf
|
||||
MdePkg/Library/UefiDebugLibStdErr/UefiDebugLibStdErr.inf
|
||||
MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
|
||||
MdePkg/Library/UefiDevicePathLib/UefiDevicePathLibStandaloneMm.inf
|
||||
MdePkg/Library/UefiDevicePathLib/UefiDevicePathLibOptionalDevicePathProtocol.inf
|
||||
MdePkg/Library/UefiDevicePathLibDevicePathProtocol/UefiDevicePathLibDevicePathProtocol.inf
|
||||
MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf
|
||||
|
Loading…
x
Reference in New Issue
Block a user