MdePkg: Add UEFI2.5 Ramdisk device path definition
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Feng Tian <feng.tian@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17878 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -3111,6 +3111,206 @@ DevPathFromTextRelativeOffsetRange (
|
||||
return (EFI_DEVICE_PATH_PROTOCOL *) Offset;
|
||||
}
|
||||
|
||||
/**
|
||||
Converts a text device path node to text ram disk device path structure.
|
||||
|
||||
@param TextDeviceNode The input Text device path node.
|
||||
|
||||
@return A pointer to the newly-created Text device path structure.
|
||||
|
||||
**/
|
||||
EFI_DEVICE_PATH_PROTOCOL *
|
||||
DevPathFromTextRamDisk (
|
||||
IN CHAR16 *TextDeviceNode
|
||||
)
|
||||
{
|
||||
CHAR16 *StartingAddrStr;
|
||||
CHAR16 *EndingAddrStr;
|
||||
CHAR16 *TypeGuidStr;
|
||||
CHAR16 *InstanceStr;
|
||||
MEDIA_RAM_DISK_DEVICE_PATH *RamDisk;
|
||||
UINT64 StartingAddr;
|
||||
UINT64 EndingAddr;
|
||||
|
||||
StartingAddrStr = GetNextParamStr (&TextDeviceNode);
|
||||
EndingAddrStr = GetNextParamStr (&TextDeviceNode);
|
||||
InstanceStr = GetNextParamStr (&TextDeviceNode);
|
||||
TypeGuidStr = GetNextParamStr (&TextDeviceNode);
|
||||
RamDisk = (MEDIA_RAM_DISK_DEVICE_PATH *) CreateDeviceNode (
|
||||
MEDIA_DEVICE_PATH,
|
||||
MEDIA_RAM_DISK_DP,
|
||||
(UINT16) sizeof (MEDIA_RAM_DISK_DEVICE_PATH)
|
||||
);
|
||||
|
||||
Strtoi64 (StartingAddrStr, &StartingAddr);
|
||||
WriteUnaligned64 ((UINT64 *) &(RamDisk->StartingAddr[0]), StartingAddr);
|
||||
Strtoi64 (EndingAddrStr, &EndingAddr);
|
||||
WriteUnaligned64 ((UINT64 *) &(RamDisk->EndingAddr[0]), EndingAddr);
|
||||
RamDisk->Instance = (UINT16) Strtoi (InstanceStr);
|
||||
StrToGuid (TypeGuidStr, &RamDisk->TypeGuid);
|
||||
|
||||
return (EFI_DEVICE_PATH_PROTOCOL *) RamDisk;
|
||||
}
|
||||
|
||||
/**
|
||||
Converts a text device path node to text virtual disk device path structure.
|
||||
|
||||
@param TextDeviceNode The input Text device path node.
|
||||
|
||||
@return A pointer to the newly-created Text device path structure.
|
||||
|
||||
**/
|
||||
EFI_DEVICE_PATH_PROTOCOL *
|
||||
DevPathFromTextVirtualDisk (
|
||||
IN CHAR16 *TextDeviceNode
|
||||
)
|
||||
{
|
||||
CHAR16 *StartingAddrStr;
|
||||
CHAR16 *EndingAddrStr;
|
||||
CHAR16 *InstanceStr;
|
||||
MEDIA_RAM_DISK_DEVICE_PATH *RamDisk;
|
||||
UINT64 StartingAddr;
|
||||
UINT64 EndingAddr;
|
||||
|
||||
StartingAddrStr = GetNextParamStr (&TextDeviceNode);
|
||||
EndingAddrStr = GetNextParamStr (&TextDeviceNode);
|
||||
InstanceStr = GetNextParamStr (&TextDeviceNode);
|
||||
|
||||
RamDisk = (MEDIA_RAM_DISK_DEVICE_PATH *) CreateDeviceNode (
|
||||
MEDIA_DEVICE_PATH,
|
||||
MEDIA_RAM_DISK_DP,
|
||||
(UINT16) sizeof (MEDIA_RAM_DISK_DEVICE_PATH)
|
||||
);
|
||||
|
||||
Strtoi64 (StartingAddrStr, &StartingAddr);
|
||||
WriteUnaligned64 ((UINT64 *) &(RamDisk->StartingAddr[0]), StartingAddr);
|
||||
Strtoi64 (EndingAddrStr, &EndingAddr);
|
||||
WriteUnaligned64 ((UINT64 *) &(RamDisk->EndingAddr[0]), EndingAddr);
|
||||
RamDisk->Instance = (UINT16) Strtoi (InstanceStr);
|
||||
CopyGuid (&RamDisk->TypeGuid, &gEfiVirtualDiskGuid);
|
||||
|
||||
return (EFI_DEVICE_PATH_PROTOCOL *) RamDisk;
|
||||
}
|
||||
|
||||
/**
|
||||
Converts a text device path node to text virtual cd device path structure.
|
||||
|
||||
@param TextDeviceNode The input Text device path node.
|
||||
|
||||
@return A pointer to the newly-created Text device path structure.
|
||||
|
||||
**/
|
||||
EFI_DEVICE_PATH_PROTOCOL *
|
||||
DevPathFromTextVirtualCd (
|
||||
IN CHAR16 *TextDeviceNode
|
||||
)
|
||||
{
|
||||
CHAR16 *StartingAddrStr;
|
||||
CHAR16 *EndingAddrStr;
|
||||
CHAR16 *InstanceStr;
|
||||
MEDIA_RAM_DISK_DEVICE_PATH *RamDisk;
|
||||
UINT64 StartingAddr;
|
||||
UINT64 EndingAddr;
|
||||
|
||||
StartingAddrStr = GetNextParamStr (&TextDeviceNode);
|
||||
EndingAddrStr = GetNextParamStr (&TextDeviceNode);
|
||||
InstanceStr = GetNextParamStr (&TextDeviceNode);
|
||||
|
||||
RamDisk = (MEDIA_RAM_DISK_DEVICE_PATH *) CreateDeviceNode (
|
||||
MEDIA_DEVICE_PATH,
|
||||
MEDIA_RAM_DISK_DP,
|
||||
(UINT16) sizeof (MEDIA_RAM_DISK_DEVICE_PATH)
|
||||
);
|
||||
|
||||
Strtoi64 (StartingAddrStr, &StartingAddr);
|
||||
WriteUnaligned64 ((UINT64 *) &(RamDisk->StartingAddr[0]), StartingAddr);
|
||||
Strtoi64 (EndingAddrStr, &EndingAddr);
|
||||
WriteUnaligned64 ((UINT64 *) &(RamDisk->EndingAddr[0]), EndingAddr);
|
||||
RamDisk->Instance = (UINT16) Strtoi (InstanceStr);
|
||||
CopyGuid (&RamDisk->TypeGuid, &gEfiVirtualCdGuid);
|
||||
|
||||
return (EFI_DEVICE_PATH_PROTOCOL *) RamDisk;
|
||||
}
|
||||
|
||||
/**
|
||||
Converts a text device path node to text persistent virtual disk device path structure.
|
||||
|
||||
@param TextDeviceNode The input Text device path node.
|
||||
|
||||
@return A pointer to the newly-created Text device path structure.
|
||||
|
||||
**/
|
||||
EFI_DEVICE_PATH_PROTOCOL *
|
||||
DevPathFromTextPersistentVirtualDisk (
|
||||
IN CHAR16 *TextDeviceNode
|
||||
)
|
||||
{
|
||||
CHAR16 *StartingAddrStr;
|
||||
CHAR16 *EndingAddrStr;
|
||||
CHAR16 *InstanceStr;
|
||||
MEDIA_RAM_DISK_DEVICE_PATH *RamDisk;
|
||||
UINT64 StartingAddr;
|
||||
UINT64 EndingAddr;
|
||||
|
||||
StartingAddrStr = GetNextParamStr (&TextDeviceNode);
|
||||
EndingAddrStr = GetNextParamStr (&TextDeviceNode);
|
||||
InstanceStr = GetNextParamStr (&TextDeviceNode);
|
||||
|
||||
RamDisk = (MEDIA_RAM_DISK_DEVICE_PATH *) CreateDeviceNode (
|
||||
MEDIA_DEVICE_PATH,
|
||||
MEDIA_RAM_DISK_DP,
|
||||
(UINT16) sizeof (MEDIA_RAM_DISK_DEVICE_PATH)
|
||||
);
|
||||
|
||||
Strtoi64 (StartingAddrStr, &StartingAddr);
|
||||
WriteUnaligned64 ((UINT64 *) &(RamDisk->StartingAddr[0]), StartingAddr);
|
||||
Strtoi64 (EndingAddrStr, &EndingAddr);
|
||||
WriteUnaligned64 ((UINT64 *) &(RamDisk->EndingAddr[0]), EndingAddr);
|
||||
RamDisk->Instance = (UINT16) Strtoi (InstanceStr);
|
||||
CopyGuid (&RamDisk->TypeGuid, &gEfiPersistentVirtualDiskGuid);
|
||||
|
||||
return (EFI_DEVICE_PATH_PROTOCOL *) RamDisk;
|
||||
}
|
||||
|
||||
/**
|
||||
Converts a text device path node to text persistent virtual cd device path structure.
|
||||
|
||||
@param TextDeviceNode The input Text device path node.
|
||||
|
||||
@return A pointer to the newly-created Text device path structure.
|
||||
|
||||
**/
|
||||
EFI_DEVICE_PATH_PROTOCOL *
|
||||
DevPathFromTextPersistentVirtualCd (
|
||||
IN CHAR16 *TextDeviceNode
|
||||
)
|
||||
{
|
||||
CHAR16 *StartingAddrStr;
|
||||
CHAR16 *EndingAddrStr;
|
||||
CHAR16 *InstanceStr;
|
||||
MEDIA_RAM_DISK_DEVICE_PATH *RamDisk;
|
||||
UINT64 StartingAddr;
|
||||
UINT64 EndingAddr;
|
||||
|
||||
StartingAddrStr = GetNextParamStr (&TextDeviceNode);
|
||||
EndingAddrStr = GetNextParamStr (&TextDeviceNode);
|
||||
InstanceStr = GetNextParamStr (&TextDeviceNode);
|
||||
|
||||
RamDisk = (MEDIA_RAM_DISK_DEVICE_PATH *) CreateDeviceNode (
|
||||
MEDIA_DEVICE_PATH,
|
||||
MEDIA_RAM_DISK_DP,
|
||||
(UINT16) sizeof (MEDIA_RAM_DISK_DEVICE_PATH)
|
||||
);
|
||||
|
||||
Strtoi64 (StartingAddrStr, &StartingAddr);
|
||||
WriteUnaligned64 ((UINT64 *) &(RamDisk->StartingAddr[0]), StartingAddr);
|
||||
Strtoi64 (EndingAddrStr, &EndingAddr);
|
||||
WriteUnaligned64 ((UINT64 *) &(RamDisk->EndingAddr[0]), EndingAddr);
|
||||
RamDisk->Instance = (UINT16) Strtoi (InstanceStr);
|
||||
CopyGuid (&RamDisk->TypeGuid, &gEfiPersistentVirtualCdGuid);
|
||||
|
||||
return (EFI_DEVICE_PATH_PROTOCOL *) RamDisk;
|
||||
}
|
||||
|
||||
/**
|
||||
Converts a BBS text device path node to BBS device path structure.
|
||||
@@ -3292,6 +3492,11 @@ GLOBAL_REMOVE_IF_UNREFERENCED DEVICE_PATH_FROM_TEXT_TABLE mUefiDevicePathLibDevP
|
||||
{L"Fv", DevPathFromTextFv },
|
||||
{L"FvFile", DevPathFromTextFvFile },
|
||||
{L"Offset", DevPathFromTextRelativeOffsetRange },
|
||||
{L"RamDisk", DevPathFromTextRamDisk },
|
||||
{L"VirtualDisk", DevPathFromTextVirtualDisk },
|
||||
{L"VirtualCD", DevPathFromTextVirtualCd },
|
||||
{L"PersistentVirtualDisk", DevPathFromTextPersistentVirtualDisk },
|
||||
{L"PersistentVirtualCD", DevPathFromTextPersistentVirtualCd },
|
||||
|
||||
{L"BbsPath", DevPathFromTextBbsPath },
|
||||
{L"BBS", DevPathFromTextBBS },
|
||||
|
@@ -1857,6 +1857,75 @@ DevPathRelativeOffsetRange (
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
Converts a Ram Disk device path structure to its string representative.
|
||||
|
||||
@param Str The string representative of input device.
|
||||
@param DevPath The input device path structure.
|
||||
@param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
|
||||
of the display node is used, where applicable. If DisplayOnly
|
||||
is FALSE, then the longer text representation of the display node
|
||||
is used.
|
||||
@param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
|
||||
representation for a device node can be used, where applicable.
|
||||
|
||||
**/
|
||||
VOID
|
||||
DevPathToTextRamDisk (
|
||||
IN OUT POOL_PRINT *Str,
|
||||
IN VOID *DevPath,
|
||||
IN BOOLEAN DisplayOnly,
|
||||
IN BOOLEAN AllowShortcuts
|
||||
)
|
||||
{
|
||||
MEDIA_RAM_DISK_DEVICE_PATH *RamDisk;
|
||||
|
||||
RamDisk = DevPath;
|
||||
|
||||
if (CompareGuid (&RamDisk->TypeGuid, &gEfiVirtualDiskGuid)) {
|
||||
UefiDevicePathLibCatPrint (
|
||||
Str,
|
||||
L"VirtualDisk(0x%lx,0x%lx,%d)",
|
||||
RShiftU64 ((UINT64)RamDisk->StartingAddr[1], 32) | RamDisk->StartingAddr[0],
|
||||
RShiftU64 ((UINT64)RamDisk->EndingAddr[1], 32) | RamDisk->EndingAddr[0],
|
||||
RamDisk->Instance
|
||||
);
|
||||
} else if (CompareGuid (&RamDisk->TypeGuid, &gEfiVirtualCdGuid)) {
|
||||
UefiDevicePathLibCatPrint (
|
||||
Str,
|
||||
L"VirtualCD(0x%lx,0x%lx,%d)",
|
||||
RShiftU64 ((UINT64)RamDisk->StartingAddr[1], 32) | RamDisk->StartingAddr[0],
|
||||
RShiftU64 ((UINT64)RamDisk->EndingAddr[1], 32) | RamDisk->EndingAddr[0],
|
||||
RamDisk->Instance
|
||||
);
|
||||
} else if (CompareGuid (&RamDisk->TypeGuid, &gEfiPersistentVirtualDiskGuid)) {
|
||||
UefiDevicePathLibCatPrint (
|
||||
Str,
|
||||
L"PersistentVirtualDisk(0x%lx,0x%lx,%d)",
|
||||
RShiftU64 ((UINT64)RamDisk->StartingAddr[1], 32) | RamDisk->StartingAddr[0],
|
||||
RShiftU64 ((UINT64)RamDisk->EndingAddr[1], 32) | RamDisk->EndingAddr[0],
|
||||
RamDisk->Instance
|
||||
);
|
||||
} else if (CompareGuid (&RamDisk->TypeGuid, &gEfiPersistentVirtualCdGuid)) {
|
||||
UefiDevicePathLibCatPrint (
|
||||
Str,
|
||||
L"PersistentVirtualCD(0x%lx,0x%lx,%d)",
|
||||
RShiftU64 ((UINT64)RamDisk->StartingAddr[1], 32) | RamDisk->StartingAddr[0],
|
||||
RShiftU64 ((UINT64)RamDisk->EndingAddr[1], 32) | RamDisk->EndingAddr[0],
|
||||
RamDisk->Instance
|
||||
);
|
||||
} else {
|
||||
UefiDevicePathLibCatPrint (
|
||||
Str,
|
||||
L"RamDisk(0x%lx,0x%lx,%d,%g)",
|
||||
RShiftU64 ((UINT64)RamDisk->StartingAddr[1], 32) | RamDisk->StartingAddr[0],
|
||||
RShiftU64 ((UINT64)RamDisk->EndingAddr[1], 32) | RamDisk->EndingAddr[0],
|
||||
RamDisk->Instance,
|
||||
&RamDisk->TypeGuid
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Converts a BIOS Boot Specification device path structure to its string representative.
|
||||
|
||||
@@ -2057,6 +2126,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED const DEVICE_PATH_TO_TEXT_TABLE mUefiDevicePathLib
|
||||
{MEDIA_DEVICE_PATH, MEDIA_PIWG_FW_VOL_DP, DevPathToTextFv },
|
||||
{MEDIA_DEVICE_PATH, MEDIA_PIWG_FW_FILE_DP, DevPathToTextFvFile },
|
||||
{MEDIA_DEVICE_PATH, MEDIA_RELATIVE_OFFSET_RANGE_DP, DevPathRelativeOffsetRange },
|
||||
{MEDIA_DEVICE_PATH, MEDIA_RAM_DISK_DP, DevPathToTextRamDisk },
|
||||
{BBS_DEVICE_PATH, BBS_BBS_DP, DevPathToTextBBS },
|
||||
{END_DEVICE_PATH_TYPE, END_INSTANCE_DEVICE_PATH_SUBTYPE, DevPathToTextEndInstance },
|
||||
{0, 0, NULL}
|
||||
|
@@ -61,6 +61,14 @@
|
||||
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
|
||||
|
Reference in New Issue
Block a user