1. Add EFI LOADED IMAGE DEVICE PATH Protocol in LoadImage() service, per UEFI 2.1b.
2. Update comments for DHCP.transmitreceive(). 2. Update UefiPxeBcDxe.inf and PxeBcDxe.inf to assign correct protocol usages. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4758 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
77442a5a27
commit
ba39e316c9
|
@ -134,6 +134,7 @@
|
||||||
gEfiLoadedImageProtocolGuid # PROTOCOL ALWAYS_PRODUCED
|
gEfiLoadedImageProtocolGuid # PROTOCOL ALWAYS_PRODUCED
|
||||||
gEfiEbcProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
|
gEfiEbcProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
|
||||||
gEfiTcgPlatformProtocolGuid
|
gEfiTcgPlatformProtocolGuid
|
||||||
|
gEfiLoadedImageDevicePathProtocolGuid # PROTOCOL ALWAYS_PRODUCED
|
||||||
|
|
||||||
[FixedPcd.common]
|
[FixedPcd.common]
|
||||||
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueDxeCoreEntry | 0x3041000 # EFI_SOFTWARE_DXE_CORE | EFI_SW_DXE_CORE_PC_ENTRY_POINT
|
gEfiMdePkgTokenSpaceGuid.PcdStatusCodeValueDxeCoreEntry | 0x3041000 # EFI_SOFTWARE_DXE_CORE | EFI_SW_DXE_CORE_PC_ENTRY_POINT
|
||||||
|
|
|
@ -55,7 +55,7 @@ typedef struct {
|
||||||
|
|
||||||
EFI_RUNTIME_IMAGE_ENTRY *RuntimeData; // Runtime image list
|
EFI_RUNTIME_IMAGE_ENTRY *RuntimeData; // Runtime image list
|
||||||
|
|
||||||
EFI_DEVICE_PATH_PROTOCOL *DeviceHandleDevicePath;
|
EFI_DEVICE_PATH_PROTOCOL *LoadedImageDevicePath; // Pointer to Loaded Image Device Path Protocl
|
||||||
|
|
||||||
PE_COFF_LOADER_IMAGE_CONTEXT ImageContext; // PeCoffLoader ImageContext
|
PE_COFF_LOADER_IMAGE_CONTEXT ImageContext; // PeCoffLoader ImageContext
|
||||||
|
|
||||||
|
|
|
@ -74,7 +74,7 @@ LOADED_IMAGE_PRIVATE_DATA mCorePrivateImage = {
|
||||||
0, // Machine
|
0, // Machine
|
||||||
NULL, // Ebc
|
NULL, // Ebc
|
||||||
NULL, // RuntimeData
|
NULL, // RuntimeData
|
||||||
NULL, // DeviceHandleDevicePath
|
NULL // LoadedImageDevicePath
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -714,7 +714,6 @@ Returns:
|
||||||
if (!EFI_ERROR (Status)) {
|
if (!EFI_ERROR (Status)) {
|
||||||
FilePathSize = CoreDevicePathSize (HandleFilePath) - sizeof(EFI_DEVICE_PATH_PROTOCOL);
|
FilePathSize = CoreDevicePathSize (HandleFilePath) - sizeof(EFI_DEVICE_PATH_PROTOCOL);
|
||||||
FilePath = (EFI_DEVICE_PATH_PROTOCOL *) ( ((UINT8 *)FilePath) + FilePathSize );
|
FilePath = (EFI_DEVICE_PATH_PROTOCOL *) ( ((UINT8 *)FilePath) + FilePathSize );
|
||||||
Image->DeviceHandleDevicePath = CoreDuplicateDevicePath (HandleFilePath);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -782,6 +781,26 @@ Returns:
|
||||||
goto Done;
|
goto Done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// If DevicePath parameter to the LoadImage() is not NULL, then make a copy of DevicePath,
|
||||||
|
// otherwise Loaded Image Device Path Protocol is installed with a NULL interface pointer.
|
||||||
|
//
|
||||||
|
if (OriginalFilePath != NULL) {
|
||||||
|
Image->LoadedImageDevicePath = CoreDuplicateDevicePath (OriginalFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Install Loaded Image Device Path Protocol onto the image handle of a PE/COFE image
|
||||||
|
//
|
||||||
|
Status = CoreInstallProtocolInterface (
|
||||||
|
&Image->Handle,
|
||||||
|
&gEfiLoadedImageDevicePathProtocolGuid,
|
||||||
|
EFI_NATIVE_INTERFACE,
|
||||||
|
Image->LoadedImageDevicePath
|
||||||
|
);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
goto Done;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Success. Return the image handle
|
// Success. Return the image handle
|
||||||
|
@ -1208,11 +1227,18 @@ Returns:
|
||||||
|
|
||||||
CoreRemoveDebugImageInfoEntry (Image->Handle);
|
CoreRemoveDebugImageInfoEntry (Image->Handle);
|
||||||
|
|
||||||
|
Status = CoreUninstallProtocolInterface (
|
||||||
|
Image->Handle,
|
||||||
|
&gEfiLoadedImageDevicePathProtocolGuid,
|
||||||
|
Image->LoadedImageDevicePath
|
||||||
|
);
|
||||||
|
|
||||||
Status = CoreUninstallProtocolInterface (
|
Status = CoreUninstallProtocolInterface (
|
||||||
Image->Handle,
|
Image->Handle,
|
||||||
&gEfiLoadedImageProtocolGuid,
|
&gEfiLoadedImageProtocolGuid,
|
||||||
&Image->Info
|
&Image->Info
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Image->RuntimeData != NULL) {
|
if (Image->RuntimeData != NULL) {
|
||||||
|
@ -1239,8 +1265,8 @@ Returns:
|
||||||
CoreFreePool (Image->Info.FilePath);
|
CoreFreePool (Image->Info.FilePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Image->DeviceHandleDevicePath != NULL) {
|
if (Image->LoadedImageDevicePath != NULL) {
|
||||||
CoreFreePool (Image->DeviceHandleDevicePath);
|
CoreFreePool (Image->LoadedImageDevicePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Image->FixupData != NULL) {
|
if (Image->FixupData != NULL) {
|
||||||
|
|
|
@ -984,13 +984,18 @@ SIGNAL_USER:
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Transmit and receive a packet through this DHCP service.
|
Transmits a DHCP formatted packet and optionally waits for responses.
|
||||||
This is unsupported.
|
|
||||||
|
|
||||||
@param This The DHCP protocol instance
|
@param This Pointer to the EFI_DHCP4_PROTOCOL instance.
|
||||||
@param Token The transmit and receive instance
|
@param Token Pointer to the EFI_DHCP4_TRANSMIT_RECEIVE_TOKEN structure.
|
||||||
|
|
||||||
@retval EFI_UNSUPPORTED It always returns unsupported.
|
@retval EFI_SUCCESS The packet was successfully queued for transmission.
|
||||||
|
@retval EFI_INVALID_PARAMETER Some parameter is NULL.
|
||||||
|
@retval EFI_NOT_READY The previous call to this function has not finished yet. Try to call
|
||||||
|
this function after collection process completes.
|
||||||
|
@retval EFI_NO_MAPPING The default station address is not available yet.
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated.
|
||||||
|
@retval Others Some other unexpected error occurred.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
STATIC
|
STATIC
|
||||||
|
|
|
@ -81,8 +81,8 @@
|
||||||
|
|
||||||
[Protocols]
|
[Protocols]
|
||||||
gEfiBisProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
gEfiBisProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||||
gEfiPxeBaseCodeCallbackProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
gEfiPxeBaseCodeCallbackProtocolGuid # PROTOCOL ALWAYS_PRODUCED
|
||||||
gEfiPxeBaseCodeProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
gEfiPxeBaseCodeProtocolGuid # PROTOCOL ALWAYS_PRODUCED
|
||||||
gEfiLoadFileProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
gEfiLoadFileProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||||
gEfiSimpleNetworkProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
gEfiSimpleNetworkProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||||
gEfiDevicePathProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
gEfiDevicePathProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||||
|
|
|
@ -83,9 +83,9 @@
|
||||||
gEfiMtftp4ProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
gEfiMtftp4ProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||||
gEfiUdp4ServiceBindingProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
gEfiUdp4ServiceBindingProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||||
gEfiDhcp4ServiceBindingProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
gEfiDhcp4ServiceBindingProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||||
gEfiPxeBaseCodeCallbackProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
gEfiPxeBaseCodeCallbackProtocolGuid # PROTOCOL ALWAYS_PRODUCED
|
||||||
gEfiPxeBaseCodeProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
gEfiPxeBaseCodeProtocolGuid # PROTOCOL ALWAYS_PRODUCED
|
||||||
gEfiLoadFileProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
gEfiLoadFileProtocolGuid # PROTOCOL ALWAYS_PRODUCED
|
||||||
gEfiDhcp4ProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
gEfiDhcp4ProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||||
gEfiUdp4ProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
gEfiUdp4ProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||||
gEfiNetworkInterfaceIdentifierProtocolGuid_31 # PROTOCOL ALWAYS_CONSUMED
|
gEfiNetworkInterfaceIdentifierProtocolGuid_31 # PROTOCOL ALWAYS_CONSUMED
|
||||||
|
|
Loading…
Reference in New Issue