]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/UefiDevicePathLib/DevicePathToText.c
MdePkg: Add UEFI2.5 Ramdisk device path definition
[mirror_edk2.git] / MdePkg / Library / UefiDevicePathLib / DevicePathToText.c
index 68b937293eb8aad749741dcb92768fe9aabc912b..e82a70484c09e7a09cf5753a9456bd00c93b3827 100644 (file)
@@ -1857,6 +1857,75 @@ DevPathRelativeOffsetRange (
     );\r
 }\r
 \r
+/**\r
+  Converts a Ram Disk device path structure to its string representative.\r
+\r
+  @param Str             The string representative of input device.\r
+  @param DevPath         The input device path structure.\r
+  @param DisplayOnly     If DisplayOnly is TRUE, then the shorter text representation\r
+                         of the display node is used, where applicable. If DisplayOnly\r
+                         is FALSE, then the longer text representation of the display node\r
+                         is used.\r
+  @param AllowShortcuts  If AllowShortcuts is TRUE, then the shortcut forms of text\r
+                         representation for a device node can be used, where applicable.\r
+\r
+**/\r
+VOID\r
+DevPathToTextRamDisk (\r
+  IN OUT POOL_PRINT       *Str,\r
+  IN VOID                 *DevPath,\r
+  IN BOOLEAN              DisplayOnly,\r
+  IN BOOLEAN              AllowShortcuts\r
+  )\r
+{\r
+  MEDIA_RAM_DISK_DEVICE_PATH *RamDisk;\r
+\r
+  RamDisk = DevPath;\r
+\r
+  if (CompareGuid (&RamDisk->TypeGuid, &gEfiVirtualDiskGuid)) {\r
+    UefiDevicePathLibCatPrint (\r
+      Str,\r
+      L"VirtualDisk(0x%lx,0x%lx,%d)",\r
+      RShiftU64 ((UINT64)RamDisk->StartingAddr[1], 32) | RamDisk->StartingAddr[0],\r
+      RShiftU64 ((UINT64)RamDisk->EndingAddr[1], 32) | RamDisk->EndingAddr[0],\r
+      RamDisk->Instance\r
+      );\r
+  } else if (CompareGuid (&RamDisk->TypeGuid, &gEfiVirtualCdGuid)) {\r
+    UefiDevicePathLibCatPrint (\r
+      Str,\r
+      L"VirtualCD(0x%lx,0x%lx,%d)",\r
+      RShiftU64 ((UINT64)RamDisk->StartingAddr[1], 32) | RamDisk->StartingAddr[0],\r
+      RShiftU64 ((UINT64)RamDisk->EndingAddr[1], 32) | RamDisk->EndingAddr[0],\r
+      RamDisk->Instance\r
+      );\r
+  } else if (CompareGuid (&RamDisk->TypeGuid, &gEfiPersistentVirtualDiskGuid)) {\r
+    UefiDevicePathLibCatPrint (\r
+      Str,\r
+      L"PersistentVirtualDisk(0x%lx,0x%lx,%d)",\r
+      RShiftU64 ((UINT64)RamDisk->StartingAddr[1], 32) | RamDisk->StartingAddr[0],\r
+      RShiftU64 ((UINT64)RamDisk->EndingAddr[1], 32) | RamDisk->EndingAddr[0],\r
+      RamDisk->Instance\r
+      );\r
+  } else if (CompareGuid (&RamDisk->TypeGuid, &gEfiPersistentVirtualCdGuid)) {\r
+    UefiDevicePathLibCatPrint (\r
+      Str,\r
+      L"PersistentVirtualCD(0x%lx,0x%lx,%d)",\r
+      RShiftU64 ((UINT64)RamDisk->StartingAddr[1], 32) | RamDisk->StartingAddr[0],\r
+      RShiftU64 ((UINT64)RamDisk->EndingAddr[1], 32) | RamDisk->EndingAddr[0],\r
+      RamDisk->Instance\r
+      );\r
+  } else {\r
+    UefiDevicePathLibCatPrint (\r
+      Str,\r
+      L"RamDisk(0x%lx,0x%lx,%d,%g)",\r
+      RShiftU64 ((UINT64)RamDisk->StartingAddr[1], 32) | RamDisk->StartingAddr[0],\r
+      RShiftU64 ((UINT64)RamDisk->EndingAddr[1], 32) | RamDisk->EndingAddr[0],\r
+      RamDisk->Instance,\r
+      &RamDisk->TypeGuid\r
+      );\r
+  }\r
+}\r
+\r
 /**\r
   Converts a BIOS Boot Specification device path structure to its string representative.\r
 \r
@@ -2057,6 +2126,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED const DEVICE_PATH_TO_TEXT_TABLE mUefiDevicePathLib
   {MEDIA_DEVICE_PATH,     MEDIA_PIWG_FW_VOL_DP,             DevPathToTextFv             },\r
   {MEDIA_DEVICE_PATH,     MEDIA_PIWG_FW_FILE_DP,            DevPathToTextFvFile         },\r
   {MEDIA_DEVICE_PATH,     MEDIA_RELATIVE_OFFSET_RANGE_DP,   DevPathRelativeOffsetRange  },\r
+  {MEDIA_DEVICE_PATH,     MEDIA_RAM_DISK_DP,                DevPathToTextRamDisk        },\r
   {BBS_DEVICE_PATH,       BBS_BBS_DP,                       DevPathToTextBBS            },\r
   {END_DEVICE_PATH_TYPE,  END_INSTANCE_DEVICE_PATH_SUBTYPE, DevPathToTextEndInstance    },\r
   {0, 0, NULL}\r