/** @file\r
Main file for support of shell consist mapping.\r
\r
- Copyright (c) 2005 - 2014, Intel Corporation. All rights reserved.<BR>\r
- This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.<BR>\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
**/\r
\r
#include "UefiShellCommandLib.h"\r
#include <Library/SortLib.h>\r
#include <Library/UefiLib.h>\r
#include <Protocol/UsbIo.h>\r
+#include <Protocol/BlockIo.h>\r
+#include <Protocol/SimpleFileSystem.h>\r
\r
typedef enum {\r
MTDTypeUnknown,\r
} MTD_TYPE;\r
\r
typedef struct {\r
- CHAR16 *Str;\r
- UINTN Len;\r
+ CHAR16 *Str;\r
+ UINTN Len;\r
} POOL_PRINT;\r
\r
typedef struct {\r
- UINTN Hi;\r
- MTD_TYPE Mtd;\r
- POOL_PRINT Csd;\r
- BOOLEAN Digital;\r
+ UINTN Hi;\r
+ MTD_TYPE Mtd;\r
+ POOL_PRINT Csd;\r
+ BOOLEAN Digital;\r
} DEVICE_CONSIST_MAPPING_INFO;\r
\r
typedef struct {\r
- MTD_TYPE MTDType;\r
- CHAR16 *Name;\r
+ MTD_TYPE MTDType;\r
+ CHAR16 *Name;\r
} MTD_NAME;\r
\r
-typedef VOID (EFIAPI *SerialDecodeFucntion) (EFI_DEVICE_PATH_PROTOCOL *DevPath, DEVICE_CONSIST_MAPPING_INFO *MapInfo,EFI_DEVICE_PATH_PROTOCOL *);\r
+/**\r
+ Serial Decode function.\r
+\r
+ @param DevPath The Device path info.\r
+ @param MapInfo The map info.\r
+ @param OrigDevPath The original device path protocol.\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
+ @retval EFI_SUCCESS The appending was successful.\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(*SERIAL_DECODE_FUNCTION) (\r
+ EFI_DEVICE_PATH_PROTOCOL *DevPath,\r
+ DEVICE_CONSIST_MAPPING_INFO *MapInfo,\r
+ EFI_DEVICE_PATH_PROTOCOL *OrigDevPath\r
+ );\r
\r
typedef struct {\r
- UINT8 Type;\r
- UINT8 SubType;\r
- SerialDecodeFucntion SerialFun;\r
- INTN (EFIAPI *CompareFun) (EFI_DEVICE_PATH_PROTOCOL *DevPath, EFI_DEVICE_PATH_PROTOCOL *DevPath2);\r
+ UINT8 Type;\r
+ UINT8 SubType;\r
+ SERIAL_DECODE_FUNCTION SerialFun;\r
+ INTN (EFIAPI *CompareFun)(EFI_DEVICE_PATH_PROTOCOL *DevPath, EFI_DEVICE_PATH_PROTOCOL *DevPath2);\r
} DEV_PATH_CONSIST_MAPPING_TABLE;\r
\r
-\r
/**\r
Concatenates a formatted unicode string to allocated pool.\r
The caller must free the resulting buffer.\r
@param Fmt The format string\r
@param ... The data will be printed.\r
\r
- @return Allocated buffer with the formatted string printed in it.\r
- The caller must free the allocated buffer.\r
- The buffer allocation is not packed.\r
+ @retval EFI_SUCCESS The string is concatenated successfully.\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
\r
**/\r
-CHAR16 *\r
+EFI_STATUS\r
EFIAPI\r
CatPrint (\r
- IN OUT POOL_PRINT *Str,\r
- IN CHAR16 *Fmt,\r
+ IN OUT POOL_PRINT *Str,\r
+ IN CHAR16 *Fmt,\r
...\r
)\r
{\r
- UINT16 *AppendStr;\r
- VA_LIST Args;\r
- UINTN StringSize;\r
+ UINT16 *AppendStr;\r
+ VA_LIST Args;\r
+ UINTN StringSize;\r
+ CHAR16 *NewStr;\r
\r
AppendStr = AllocateZeroPool (0x1000);\r
if (AppendStr == NULL) {\r
- ASSERT(FALSE);\r
- return Str->Str;\r
+ return EFI_OUT_OF_RESOURCES;\r
}\r
\r
VA_START (Args, Fmt);\r
UnicodeVSPrint (AppendStr, 0x1000, Fmt, Args);\r
VA_END (Args);\r
if (NULL == Str->Str) {\r
- StringSize = StrSize (AppendStr);\r
- Str->Str = AllocateZeroPool (StringSize);\r
- ASSERT (Str->Str != NULL);\r
- } else {\r
StringSize = StrSize (AppendStr);\r
+ NewStr = AllocateZeroPool (StringSize);\r
+ } else {\r
+ StringSize = StrSize (AppendStr);\r
StringSize += (StrSize (Str->Str) - sizeof (UINT16));\r
\r
- Str->Str = ReallocatePool (\r
- StrSize (Str->Str),\r
- StringSize,\r
- Str->Str\r
+ NewStr = ReallocatePool (\r
+ StrSize (Str->Str),\r
+ StringSize,\r
+ Str->Str\r
);\r
- ASSERT (Str->Str != NULL);\r
}\r
\r
- StrnCat (Str->Str, AppendStr, StringSize/sizeof(CHAR16) - 1 - StrLen(Str->Str));\r
+ if (NewStr == NULL) {\r
+ FreePool (AppendStr);\r
+ return EFI_OUT_OF_RESOURCES;\r
+ }\r
+\r
+ Str->Str = NewStr;\r
+ StrCatS (Str->Str, StringSize/sizeof (CHAR16), AppendStr);\r
Str->Len = StringSize;\r
\r
FreePool (AppendStr);\r
- return Str->Str;\r
+ return EFI_SUCCESS;\r
}\r
\r
MTD_NAME mMTDName[] = {\r
@param[in, out] Str The string so append onto.\r
@param[in] Num The number to divide and append.\r
\r
- @retval EFI_INVALID_PARAMETER A parameter was NULL.\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
@retval EFI_SUCCESS The appending was successful.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
AppendCSDNum2 (\r
- IN OUT POOL_PRINT *Str,\r
- IN UINT64 Num\r
+ IN OUT POOL_PRINT *Str,\r
+ IN UINT64 Num\r
)\r
{\r
- UINT64 Result;\r
- UINT32 Rem;\r
+ EFI_STATUS Status;\r
+ UINT64 Result;\r
+ UINT32 Rem;\r
\r
- if (Str == NULL) {\r
- return (EFI_INVALID_PARAMETER);\r
- }\r
+ ASSERT (Str != NULL);\r
\r
Result = DivU64x32Remainder (Num, 25, &Rem);\r
if (Result > 0) {\r
- AppendCSDNum2 (Str, Result);\r
+ Status = AppendCSDNum2 (Str, Result);\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
}\r
\r
- CatPrint (Str, L"%c", Rem + 'a');\r
- return (EFI_SUCCESS);\r
+ return CatPrint (Str, L"%c", Rem + 'a');\r
}\r
\r
/**\r
@param[in, out] MappingItem The mapping info object to append onto.\r
@param[in] Num The info to append.\r
\r
- @retval EFI_INVALID_PARAMETER A parameter was NULL.\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
@retval EFI_SUCCESS The appending was successful.\r
+\r
**/\r
EFI_STATUS\r
-EFIAPI\r
AppendCSDNum (\r
- IN OUT DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
- IN UINT64 Num\r
+ IN OUT DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
+ IN UINT64 Num\r
)\r
{\r
- if (MappingItem == NULL) {\r
- return EFI_INVALID_PARAMETER;\r
- }\r
+ EFI_STATUS Status;\r
+\r
+ ASSERT (MappingItem != NULL);\r
\r
if (MappingItem->Digital) {\r
- CatPrint (&MappingItem->Csd, L"%ld", Num);\r
+ Status = CatPrint (&MappingItem->Csd, L"%ld", Num);\r
} else {\r
- AppendCSDNum2 (&MappingItem->Csd, Num);\r
+ Status = AppendCSDNum2 (&MappingItem->Csd, Num);\r
}\r
\r
- MappingItem->Digital = (BOOLEAN)!(MappingItem->Digital);\r
+ if (!EFI_ERROR (Status)) {\r
+ MappingItem->Digital = (BOOLEAN) !(MappingItem->Digital);\r
+ }\r
\r
- return (EFI_SUCCESS);\r
+ return Status;\r
}\r
\r
/**\r
@param[in, out] MappingItem The mapping info object to append onto.\r
@param[in] Str The info to append.\r
\r
- @retval EFI_INVALID_PARAMETER A parameter was NULL.\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
@retval EFI_SUCCESS The appending was successful.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
AppendCSDStr (\r
- IN OUT DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
- IN CHAR16 *Str\r
+ IN OUT DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
+ IN CHAR16 *Str\r
)\r
{\r
- CHAR16 *Index;\r
+ CHAR16 *Index;\r
+ EFI_STATUS Status;\r
\r
- if (Str == NULL || MappingItem == NULL) {\r
- return (EFI_INVALID_PARAMETER);\r
- }\r
+ ASSERT (Str != NULL && MappingItem != NULL);\r
+\r
+ Status = EFI_SUCCESS;\r
\r
if (MappingItem->Digital) {\r
//\r
//\r
for (Index = Str; *Index != 0; Index++) {\r
switch (*Index) {\r
- case '0':\r
- case '2':\r
- case '3':\r
- case '4':\r
- case '5':\r
- case '6':\r
- case '7':\r
- case '8':\r
- case '9':\r
- CatPrint (&MappingItem->Csd, L"%c", *Index);\r
- break;\r
-\r
- case '1':\r
- CatPrint (&MappingItem->Csd, L"16");\r
- break;\r
-\r
- case 'a':\r
- case 'b':\r
- case 'c':\r
- case 'd':\r
- case 'e':\r
- case 'f':\r
- CatPrint (&MappingItem->Csd, L"1%c", *Index - 'a' + '0');\r
- break;\r
+ case '0':\r
+ case '2':\r
+ case '3':\r
+ case '4':\r
+ case '5':\r
+ case '6':\r
+ case '7':\r
+ case '8':\r
+ case '9':\r
+ Status = CatPrint (&MappingItem->Csd, L"%c", *Index);\r
+ break;\r
+\r
+ case '1':\r
+ Status = CatPrint (&MappingItem->Csd, L"16");\r
+ break;\r
+\r
+ case 'a':\r
+ case 'b':\r
+ case 'c':\r
+ case 'd':\r
+ case 'e':\r
+ case 'f':\r
+ Status = CatPrint (&MappingItem->Csd, L"1%c", *Index - 'a' + '0');\r
+ break;\r
+\r
+ case 'A':\r
+ case 'B':\r
+ case 'C':\r
+ case 'D':\r
+ case 'E':\r
+ case 'F':\r
+ Status = CatPrint (&MappingItem->Csd, L"1%c", *Index - 'A' + '0');\r
+ break;\r
+ }\r
\r
- case 'A':\r
- case 'B':\r
- case 'C':\r
- case 'D':\r
- case 'E':\r
- case 'F':\r
- CatPrint (&MappingItem->Csd, L"1%c", *Index - 'A' + '0');\r
- break;\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
}\r
}\r
} else {\r
// 0 1 2 3 4 5 6 7 8 9 a b c d e f\r
// a b c d e f g h i j k l m n o p\r
//\r
- if (*Index >= '0' && *Index <= '9') {\r
- CatPrint (&MappingItem->Csd, L"%c", *Index - '0' + 'a');\r
- } else if (*Index >= 'a' && *Index <= 'f') {\r
- CatPrint (&MappingItem->Csd, L"%c", *Index - 'a' + 'k');\r
- } else if (*Index >= 'A' && *Index <= 'F') {\r
- CatPrint (&MappingItem->Csd, L"%c", *Index - 'A' + 'k');\r
+ if ((*Index >= '0') && (*Index <= '9')) {\r
+ Status = CatPrint (&MappingItem->Csd, L"%c", *Index - '0' + 'a');\r
+ } else if ((*Index >= 'a') && (*Index <= 'f')) {\r
+ Status = CatPrint (&MappingItem->Csd, L"%c", *Index - 'a' + 'k');\r
+ } else if ((*Index >= 'A') && (*Index <= 'F')) {\r
+ Status = CatPrint (&MappingItem->Csd, L"%c", *Index - 'A' + 'k');\r
+ }\r
+\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
}\r
}\r
}\r
\r
- MappingItem->Digital = (BOOLEAN)!(MappingItem->Digital);\r
+ MappingItem->Digital = (BOOLEAN) !(MappingItem->Digital);\r
\r
return (EFI_SUCCESS);\r
}\r
@param[in, out] MappingItem The item to append onto.\r
@param[in] Guid The guid to append.\r
\r
- @retval EFI_SUCCESS The appending operation was successful.\r
- @retval EFI_INVALID_PARAMETER A parameter was NULL.\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
+ @retval EFI_SUCCESS The appending was successful.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
AppendCSDGuid (\r
- DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
- EFI_GUID *Guid\r
+ DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
+ EFI_GUID *Guid\r
)\r
{\r
CHAR16 Buffer[64];\r
\r
- if (Guid == NULL || MappingItem == NULL) {\r
- return (EFI_INVALID_PARAMETER);\r
- }\r
+ ASSERT (Guid != NULL && MappingItem != NULL);\r
\r
UnicodeSPrint (\r
Buffer,\r
0,\r
L"%g",\r
Guid\r
- );\r
-\r
- AppendCSDStr (MappingItem, Buffer);\r
+ );\r
\r
- return (EFI_SUCCESS);\r
+ return AppendCSDStr (MappingItem, Buffer);\r
}\r
\r
/**\r
INTN\r
EFIAPI\r
DevPathCompareAcpi (\r
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath1,\r
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath2\r
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath1,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath2\r
)\r
{\r
ACPI_HID_DEVICE_PATH *Acpi1;\r
ACPI_HID_DEVICE_PATH *Acpi2;\r
\r
- if (DevicePath1 == NULL || DevicePath2 == NULL) {\r
+ if ((DevicePath1 == NULL) || (DevicePath2 == NULL)) {\r
return (-2);\r
}\r
\r
- Acpi1 = (ACPI_HID_DEVICE_PATH *) DevicePath1;\r
- Acpi2 = (ACPI_HID_DEVICE_PATH *) DevicePath2;\r
- if (Acpi1->HID > Acpi2->HID || (Acpi1->HID == Acpi2->HID && Acpi1->UID > Acpi2->UID)) {\r
+ Acpi1 = (ACPI_HID_DEVICE_PATH *)DevicePath1;\r
+ Acpi2 = (ACPI_HID_DEVICE_PATH *)DevicePath2;\r
+ if ((Acpi1->HID > Acpi2->HID) || ((Acpi1->HID == Acpi2->HID) && (Acpi1->UID > Acpi2->UID))) {\r
return 1;\r
}\r
\r
- if (Acpi1->HID == Acpi2->HID && Acpi1->UID == Acpi2->UID) {\r
+ if ((Acpi1->HID == Acpi2->HID) && (Acpi1->UID == Acpi2->UID)) {\r
return 0;\r
}\r
\r
INTN\r
EFIAPI\r
DevPathComparePci (\r
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath1,\r
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath2\r
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath1,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath2\r
)\r
{\r
- PCI_DEVICE_PATH *Pci1;\r
- PCI_DEVICE_PATH *Pci2;\r
+ PCI_DEVICE_PATH *Pci1;\r
+ PCI_DEVICE_PATH *Pci2;\r
\r
- ASSERT(DevicePath1 != NULL);\r
- ASSERT(DevicePath2 != NULL);\r
+ ASSERT (DevicePath1 != NULL);\r
+ ASSERT (DevicePath2 != NULL);\r
\r
- Pci1 = (PCI_DEVICE_PATH *) DevicePath1;\r
- Pci2 = (PCI_DEVICE_PATH *) DevicePath2;\r
- if (Pci1->Device > Pci2->Device || (Pci1->Device == Pci2->Device && Pci1->Function > Pci2->Function)) {\r
+ Pci1 = (PCI_DEVICE_PATH *)DevicePath1;\r
+ Pci2 = (PCI_DEVICE_PATH *)DevicePath2;\r
+ if ((Pci1->Device > Pci2->Device) || ((Pci1->Device == Pci2->Device) && (Pci1->Function > Pci2->Function))) {\r
return 1;\r
}\r
\r
- if (Pci1->Device == Pci2->Device && Pci1->Function == Pci2->Function) {\r
+ if ((Pci1->Device == Pci2->Device) && (Pci1->Function == Pci2->Function)) {\r
return 0;\r
}\r
\r
INTN\r
EFIAPI\r
DevPathCompareDefault (\r
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath1,\r
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath2\r
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath1,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath2\r
)\r
{\r
- UINTN DevPathSize1;\r
- UINTN DevPathSize2;\r
+ UINTN DevPathSize1;\r
+ UINTN DevPathSize2;\r
\r
- ASSERT(DevicePath1 != NULL);\r
- ASSERT(DevicePath2 != NULL);\r
+ ASSERT (DevicePath1 != NULL);\r
+ ASSERT (DevicePath2 != NULL);\r
\r
- DevPathSize1 = DevicePathNodeLength (DevicePath1);\r
- DevPathSize2 = DevicePathNodeLength (DevicePath2);\r
+ DevPathSize1 = DevicePathNodeLength (DevicePath1);\r
+ DevPathSize2 = DevicePathNodeLength (DevicePath2);\r
if (DevPathSize1 > DevPathSize2) {\r
return 1;\r
} else if (DevPathSize1 < DevPathSize2) {\r
\r
@param[in] DevicePathNode The node to get info on.\r
@param[in] MappingItem The info item to populate.\r
+ @param[in] DevicePath Ignored.\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
+ @retval EFI_SUCCESS The appending was successful.\r
**/\r
-VOID\r
-EFIAPI\r
+EFI_STATUS\r
DevPathSerialHardDrive (\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,\r
IN DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
)\r
{\r
- HARDDRIVE_DEVICE_PATH *Hd;\r
+ HARDDRIVE_DEVICE_PATH *Hd;\r
\r
- ASSERT(DevicePathNode != NULL);\r
- ASSERT(MappingItem != NULL);\r
+ ASSERT (DevicePathNode != NULL);\r
+ ASSERT (MappingItem != NULL);\r
\r
- Hd = (HARDDRIVE_DEVICE_PATH *) DevicePathNode;\r
+ Hd = (HARDDRIVE_DEVICE_PATH *)DevicePathNode;\r
if (MappingItem->Mtd == MTDTypeUnknown) {\r
MappingItem->Mtd = MTDTypeHardDisk;\r
}\r
\r
- AppendCSDNum (MappingItem, Hd->PartitionNumber);\r
+ return AppendCSDNum (MappingItem, Hd->PartitionNumber);\r
}\r
\r
/**\r
\r
@param[in] DevicePathNode The node to get info on.\r
@param[in] MappingItem The info item to populate.\r
+ @param[in] DevicePath Ignored.\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
+ @retval EFI_SUCCESS The appending was successful.\r
**/\r
-VOID\r
-EFIAPI\r
+EFI_STATUS\r
DevPathSerialAtapi (\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,\r
IN DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
)\r
{\r
- ATAPI_DEVICE_PATH *Atapi;\r
+ ATAPI_DEVICE_PATH *Atapi;\r
\r
- ASSERT(DevicePathNode != NULL);\r
- ASSERT(MappingItem != NULL);\r
+ ASSERT (DevicePathNode != NULL);\r
+ ASSERT (MappingItem != NULL);\r
\r
- Atapi = (ATAPI_DEVICE_PATH *) DevicePathNode;\r
- AppendCSDNum (MappingItem, (Atapi->PrimarySecondary * 2 + Atapi->SlaveMaster));\r
+ Atapi = (ATAPI_DEVICE_PATH *)DevicePathNode;\r
+ return AppendCSDNum (MappingItem, (Atapi->PrimarySecondary * 2 + Atapi->SlaveMaster));\r
}\r
\r
/**\r
\r
@param[in] DevicePathNode The node to get info on.\r
@param[in] MappingItem The info item to populate.\r
+ @param[in] DevicePath Ignored.\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
+ @retval EFI_SUCCESS The appending was successful.\r
**/\r
-VOID\r
-EFIAPI\r
+EFI_STATUS\r
DevPathSerialCdRom (\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,\r
IN DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
)\r
{\r
- CDROM_DEVICE_PATH *Cd;\r
+ CDROM_DEVICE_PATH *Cd;\r
\r
- ASSERT(DevicePathNode != NULL);\r
- ASSERT(MappingItem != NULL);\r
+ ASSERT (DevicePathNode != NULL);\r
+ ASSERT (MappingItem != NULL);\r
\r
- Cd = (CDROM_DEVICE_PATH *) DevicePathNode;\r
- MappingItem->Mtd = MTDTypeCDRom;\r
- AppendCSDNum (MappingItem, Cd->BootEntry);\r
+ Cd = (CDROM_DEVICE_PATH *)DevicePathNode;\r
+ MappingItem->Mtd = MTDTypeCDRom;\r
+ return AppendCSDNum (MappingItem, Cd->BootEntry);\r
}\r
\r
/**\r
\r
@param[in] DevicePathNode The node to get info on.\r
@param[in] MappingItem The info item to populate.\r
+ @param[in] DevicePath Ignored.\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
+ @retval EFI_SUCCESS The appending was successful.\r
**/\r
-VOID\r
-EFIAPI\r
+EFI_STATUS\r
DevPathSerialFibre (\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,\r
IN DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
)\r
{\r
+ EFI_STATUS Status;\r
FIBRECHANNEL_DEVICE_PATH *Fibre;\r
\r
- ASSERT(DevicePathNode != NULL);\r
- ASSERT(MappingItem != NULL);\r
+ ASSERT (DevicePathNode != NULL);\r
+ ASSERT (MappingItem != NULL);\r
+\r
+ Fibre = (FIBRECHANNEL_DEVICE_PATH *)DevicePathNode;\r
+ Status = AppendCSDNum (MappingItem, Fibre->WWN);\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = AppendCSDNum (MappingItem, Fibre->Lun);\r
+ }\r
\r
- Fibre = (FIBRECHANNEL_DEVICE_PATH *) DevicePathNode;\r
- AppendCSDNum (MappingItem, Fibre->WWN);\r
- AppendCSDNum (MappingItem, Fibre->Lun);\r
+ return Status;\r
}\r
\r
/**\r
\r
@param[in] DevicePathNode The node to get info on.\r
@param[in] MappingItem The info item to populate.\r
+ @param[in] DevicePath Ignored.\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
+ @retval EFI_SUCCESS The appending was successful.\r
**/\r
-VOID\r
-EFIAPI\r
+EFI_STATUS\r
DevPathSerialUart (\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,\r
IN DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
)\r
{\r
+ EFI_STATUS Status;\r
UART_DEVICE_PATH *Uart;\r
\r
- ASSERT(DevicePathNode != NULL);\r
- ASSERT(MappingItem != NULL);\r
+ ASSERT (DevicePathNode != NULL);\r
+ ASSERT (MappingItem != NULL);\r
\r
- Uart = (UART_DEVICE_PATH *) DevicePathNode;\r
- AppendCSDNum (MappingItem, Uart->BaudRate);\r
- AppendCSDNum (MappingItem, Uart->DataBits);\r
- AppendCSDNum (MappingItem, Uart->Parity);\r
- AppendCSDNum (MappingItem, Uart->StopBits);\r
+ Uart = (UART_DEVICE_PATH *)DevicePathNode;\r
+ Status = AppendCSDNum (MappingItem, Uart->BaudRate);\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = AppendCSDNum (MappingItem, Uart->DataBits);\r
+ }\r
+\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = AppendCSDNum (MappingItem, Uart->Parity);\r
+ }\r
+\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = AppendCSDNum (MappingItem, Uart->StopBits);\r
+ }\r
+\r
+ return Status;\r
}\r
\r
/**\r
\r
@param[in] DevicePathNode The node to get info on.\r
@param[in] MappingItem The info item to populate.\r
+ @param[in] DevicePath Ignored.\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
+ @retval EFI_SUCCESS The appending was successful.\r
**/\r
-VOID\r
-EFIAPI\r
+EFI_STATUS\r
DevPathSerialUsb (\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,\r
IN DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
EFI_STATUS Status;\r
USB_INTERFACE_DESCRIPTOR InterfaceDesc;\r
\r
+ ASSERT (DevicePathNode != NULL);\r
+ ASSERT (MappingItem != NULL);\r
\r
- ASSERT(DevicePathNode != NULL);\r
- ASSERT(MappingItem != NULL);\r
+ Usb = (USB_DEVICE_PATH *)DevicePathNode;\r
+ Status = AppendCSDNum (MappingItem, Usb->ParentPortNumber);\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = AppendCSDNum (MappingItem, Usb->InterfaceNumber);\r
+ }\r
\r
- Usb = (USB_DEVICE_PATH *) DevicePathNode;\r
- AppendCSDNum (MappingItem, Usb->ParentPortNumber);\r
- AppendCSDNum (MappingItem, Usb->InterfaceNumber);\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
\r
- if (PcdGetBool(PcdUsbExtendedDecode)) {\r
- Status = gBS->LocateDevicePath( &gEfiUsbIoProtocolGuid, &DevicePath, &TempHandle );\r
- UsbIo = NULL;\r
- if (!EFI_ERROR(Status)) {\r
- Status = gBS->OpenProtocol(TempHandle, &gEfiUsbIoProtocolGuid, (VOID**)&UsbIo, gImageHandle, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL);\r
- } \r
+ if (PcdGetBool (PcdUsbExtendedDecode)) {\r
+ Status = gBS->LocateDevicePath (&gEfiUsbIoProtocolGuid, &DevicePath, &TempHandle);\r
+ UsbIo = NULL;\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = gBS->OpenProtocol (TempHandle, &gEfiUsbIoProtocolGuid, (VOID **)&UsbIo, gImageHandle, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL);\r
+ }\r
\r
- if (!EFI_ERROR(Status)) {\r
- ASSERT(UsbIo != NULL);\r
- Status = UsbIo->UsbGetInterfaceDescriptor(UsbIo, &InterfaceDesc);\r
- if (!EFI_ERROR(Status)) {\r
- if (InterfaceDesc.InterfaceClass == USB_MASS_STORE_CLASS && MappingItem->Mtd == MTDTypeUnknown) {\r
- switch (InterfaceDesc.InterfaceSubClass){\r
+ if (!EFI_ERROR (Status)) {\r
+ ASSERT (UsbIo != NULL);\r
+ Status = UsbIo->UsbGetInterfaceDescriptor (UsbIo, &InterfaceDesc);\r
+ if (!EFI_ERROR (Status)) {\r
+ if ((InterfaceDesc.InterfaceClass == USB_MASS_STORE_CLASS) && (MappingItem->Mtd == MTDTypeUnknown)) {\r
+ switch (InterfaceDesc.InterfaceSubClass) {\r
case USB_MASS_STORE_SCSI:\r
MappingItem->Mtd = MTDTypeHardDisk;\r
break;\r
MappingItem->Mtd = MTDTypeFloppy;\r
break;\r
case USB_MASS_STORE_8020I:\r
- MappingItem->Mtd = MTDTypeCDRom;\r
+ MappingItem->Mtd = MTDTypeCDRom;\r
break;\r
}\r
}\r
}\r
- } \r
+ }\r
}\r
+\r
+ return Status;\r
}\r
\r
/**\r
\r
@param[in] DevicePathNode The node to get info on.\r
@param[in] MappingItem The info item to populate.\r
+ @param[in] DevicePath Ignored.\r
\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
+ @retval EFI_SUCCESS The appending was successful.\r
**/\r
-VOID\r
-EFIAPI\r
+EFI_STATUS\r
DevPathSerialVendor (\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,\r
IN DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
)\r
{\r
+ EFI_STATUS Status;\r
VENDOR_DEVICE_PATH *Vendor;\r
SAS_DEVICE_PATH *Sas;\r
UINTN TargetNameLength;\r
UINTN Index;\r
CHAR16 *Buffer;\r
+ CHAR16 *NewBuffer;\r
\r
- if (DevicePathNode == NULL || MappingItem == NULL) {\r
- return;\r
- }\r
+ ASSERT (DevicePathNode != NULL);\r
+ ASSERT (MappingItem != NULL);\r
\r
- Vendor = (VENDOR_DEVICE_PATH *) DevicePathNode;\r
- AppendCSDGuid (MappingItem, &Vendor->Guid);\r
+ Vendor = (VENDOR_DEVICE_PATH *)DevicePathNode;\r
+ Status = AppendCSDGuid (MappingItem, &Vendor->Guid);\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
\r
if (CompareGuid (&gEfiSasDevicePathGuid, &Vendor->Guid)) {\r
- Sas = (SAS_DEVICE_PATH *) Vendor;\r
- AppendCSDNum (MappingItem, Sas->SasAddress);\r
- AppendCSDNum (MappingItem, Sas->Lun);\r
- AppendCSDNum (MappingItem, Sas->DeviceTopology);\r
- AppendCSDNum (MappingItem, Sas->RelativeTargetPort);\r
+ Sas = (SAS_DEVICE_PATH *)Vendor;\r
+ Status = AppendCSDNum (MappingItem, Sas->SasAddress);\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = AppendCSDNum (MappingItem, Sas->Lun);\r
+ }\r
+\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = AppendCSDNum (MappingItem, Sas->DeviceTopology);\r
+ }\r
+\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = AppendCSDNum (MappingItem, Sas->RelativeTargetPort);\r
+ }\r
} else {\r
- TargetNameLength = MIN(DevicePathNodeLength (DevicePathNode) - sizeof (VENDOR_DEVICE_PATH), PcdGet32(PcdShellVendorExtendedDecode));\r
+ TargetNameLength = MIN (DevicePathNodeLength (DevicePathNode) - sizeof (VENDOR_DEVICE_PATH), PcdGet32 (PcdShellVendorExtendedDecode));\r
if (TargetNameLength != 0) {\r
//\r
// String is 2 chars per data byte, plus NULL terminator\r
//\r
- Buffer = AllocateZeroPool (((TargetNameLength * 2) + 1) * sizeof(CHAR16));\r
- ASSERT(Buffer != NULL);\r
+ Buffer = AllocateZeroPool (((TargetNameLength * 2) + 1) * sizeof (CHAR16));\r
if (Buffer == NULL) {\r
- return;\r
- }\r
+ return EFI_OUT_OF_RESOURCES;\r
+ }\r
\r
//\r
// Build the string data\r
//\r
for (Index = 0; Index < TargetNameLength; Index++) {\r
- Buffer = CatSPrint (Buffer, L"%02x", *((UINT8*)Vendor + sizeof (VENDOR_DEVICE_PATH) + Index));\r
-}\r
+ NewBuffer = CatSPrint (Buffer, L"%02x", *((UINT8 *)Vendor + sizeof (VENDOR_DEVICE_PATH) + Index));\r
+ if (NewBuffer == NULL) {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ break;\r
+ }\r
+\r
+ Buffer = NewBuffer;\r
+ }\r
\r
//\r
// Append the new data block\r
//\r
- AppendCSDStr (MappingItem, Buffer);\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = AppendCSDStr (MappingItem, Buffer);\r
+ }\r
\r
- FreePool(Buffer);\r
+ FreePool (Buffer);\r
}\r
}\r
+\r
+ return Status;\r
}\r
\r
/**\r
\r
@param[in] DevicePathNode The node to get info on.\r
@param[in] MappingItem The info item to populate.\r
+ @param[in] DevicePath Ignored.\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
+ @retval EFI_SUCCESS The appending was successful.\r
**/\r
-VOID\r
-EFIAPI\r
+EFI_STATUS\r
DevPathSerialLun (\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,\r
IN DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
)\r
{\r
- DEVICE_LOGICAL_UNIT_DEVICE_PATH *Lun;\r
+ DEVICE_LOGICAL_UNIT_DEVICE_PATH *Lun;\r
\r
- ASSERT(DevicePathNode != NULL);\r
- ASSERT(MappingItem != NULL);\r
+ ASSERT (DevicePathNode != NULL);\r
+ ASSERT (MappingItem != NULL);\r
\r
- Lun = (DEVICE_LOGICAL_UNIT_DEVICE_PATH *) DevicePathNode;\r
- AppendCSDNum (MappingItem, Lun->Lun);\r
+ Lun = (DEVICE_LOGICAL_UNIT_DEVICE_PATH *)DevicePathNode;\r
+ return AppendCSDNum (MappingItem, Lun->Lun);\r
}\r
\r
/**\r
\r
@param[in] DevicePathNode The node to get info on.\r
@param[in] MappingItem The info item to populate.\r
+ @param[in] DevicePath Ignored.\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
+ @retval EFI_SUCCESS The appending was successful.\r
**/\r
-VOID\r
-EFIAPI\r
+EFI_STATUS\r
DevPathSerialSata (\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,\r
IN DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
)\r
{\r
+ EFI_STATUS Status;\r
SATA_DEVICE_PATH *Sata;\r
\r
- ASSERT(DevicePathNode != NULL);\r
- ASSERT(MappingItem != NULL);\r
+ ASSERT (DevicePathNode != NULL);\r
+ ASSERT (MappingItem != NULL);\r
+\r
+ Sata = (SATA_DEVICE_PATH *)DevicePathNode;\r
+ Status = AppendCSDNum (MappingItem, Sata->HBAPortNumber);\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = AppendCSDNum (MappingItem, Sata->PortMultiplierPortNumber);\r
+ }\r
+\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = AppendCSDNum (MappingItem, Sata->Lun);\r
+ }\r
\r
- Sata = (SATA_DEVICE_PATH *) DevicePathNode;\r
- AppendCSDNum (MappingItem, Sata->HBAPortNumber);\r
- AppendCSDNum (MappingItem, Sata->PortMultiplierPortNumber);\r
- AppendCSDNum (MappingItem, Sata->Lun);\r
+ return Status;\r
}\r
\r
/**\r
\r
@param[in] DevicePathNode The node to get info on.\r
@param[in] MappingItem The info item to populate.\r
+ @param[in] DevicePath Ignored.\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
+ @retval EFI_SUCCESS The appending was successful.\r
**/\r
-VOID\r
-EFIAPI\r
+EFI_STATUS\r
DevPathSerialIScsi (\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,\r
IN DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
)\r
{\r
+ EFI_STATUS Status;\r
ISCSI_DEVICE_PATH *IScsi;\r
UINT8 *IScsiTargetName;\r
CHAR16 *TargetName;\r
UINTN TargetNameLength;\r
UINTN Index;\r
\r
- ASSERT(DevicePathNode != NULL);\r
- ASSERT(MappingItem != NULL);\r
+ ASSERT (DevicePathNode != NULL);\r
+ ASSERT (MappingItem != NULL);\r
+\r
+ Status = EFI_SUCCESS;\r
+\r
+ if (PcdGetBool (PcdShellDecodeIScsiMapNames)) {\r
+ IScsi = (ISCSI_DEVICE_PATH *)DevicePathNode;\r
+ Status = AppendCSDNum (MappingItem, IScsi->NetworkProtocol);\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = AppendCSDNum (MappingItem, IScsi->LoginOption);\r
+ }\r
+\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = AppendCSDNum (MappingItem, IScsi->Lun);\r
+ }\r
+\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = AppendCSDNum (MappingItem, IScsi->TargetPortalGroupTag);\r
+ }\r
+\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
\r
- if (PcdGetBool(PcdShellDecodeIScsiMapNames)) {\r
- IScsi = (ISCSI_DEVICE_PATH *) DevicePathNode;\r
- AppendCSDNum (MappingItem, IScsi->NetworkProtocol);\r
- AppendCSDNum (MappingItem, IScsi->LoginOption);\r
- AppendCSDNum (MappingItem, IScsi->Lun);\r
- AppendCSDNum (MappingItem, IScsi->TargetPortalGroupTag);\r
TargetNameLength = DevicePathNodeLength (DevicePathNode) - sizeof (ISCSI_DEVICE_PATH);\r
if (TargetNameLength > 0) {\r
TargetName = AllocateZeroPool ((TargetNameLength + 1) * sizeof (CHAR16));\r
- if (TargetName != NULL) {\r
- IScsiTargetName = (UINT8 *) (IScsi + 1);\r
+ if (TargetName == NULL) {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ } else {\r
+ IScsiTargetName = (UINT8 *)(IScsi + 1);\r
for (Index = 0; Index < TargetNameLength; Index++) {\r
- TargetName[Index] = (CHAR16) IScsiTargetName[Index];\r
+ TargetName[Index] = (CHAR16)IScsiTargetName[Index];\r
}\r
- AppendCSDStr (MappingItem, TargetName);\r
+\r
+ Status = AppendCSDStr (MappingItem, TargetName);\r
FreePool (TargetName);\r
}\r
}\r
}\r
+\r
+ return Status;\r
}\r
\r
/**\r
\r
@param[in] DevicePathNode The node to get info on.\r
@param[in] MappingItem The info item to populate.\r
+ @param[in] DevicePath Ignored.\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
+ @retval EFI_SUCCESS The appending was successful.\r
**/\r
-VOID\r
-EFIAPI\r
+EFI_STATUS\r
DevPathSerialI2O (\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,\r
IN DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
)\r
{\r
- I2O_DEVICE_PATH *DevicePath_I20;\r
+ I2O_DEVICE_PATH *DevicePath_I20;\r
\r
- ASSERT(DevicePathNode != NULL);\r
- ASSERT(MappingItem != NULL);\r
+ ASSERT (DevicePathNode != NULL);\r
+ ASSERT (MappingItem != NULL);\r
\r
- DevicePath_I20 = (I2O_DEVICE_PATH *) DevicePathNode;\r
- AppendCSDNum (MappingItem, DevicePath_I20->Tid);\r
+ DevicePath_I20 = (I2O_DEVICE_PATH *)DevicePathNode;\r
+ return AppendCSDNum (MappingItem, DevicePath_I20->Tid);\r
}\r
\r
/**\r
\r
@param[in] DevicePathNode The node to get info on.\r
@param[in] MappingItem The info item to populate.\r
+ @param[in] DevicePath Ignored.\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
+ @retval EFI_SUCCESS The appending was successful.\r
**/\r
-VOID\r
-EFIAPI\r
+EFI_STATUS\r
DevPathSerialMacAddr (\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,\r
IN DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
CHAR16 Buffer[64];\r
CHAR16 *PBuffer;\r
\r
- ASSERT(DevicePathNode != NULL);\r
- ASSERT(MappingItem != NULL);\r
+ ASSERT (DevicePathNode != NULL);\r
+ ASSERT (MappingItem != NULL);\r
\r
- Mac = (MAC_ADDR_DEVICE_PATH *) DevicePathNode;\r
+ Mac = (MAC_ADDR_DEVICE_PATH *)DevicePathNode;\r
\r
HwAddressSize = sizeof (EFI_MAC_ADDRESS);\r
- if (Mac->IfType == 0x01 || Mac->IfType == 0x00) {\r
+ if ((Mac->IfType == 0x01) || (Mac->IfType == 0x00)) {\r
HwAddressSize = 6;\r
}\r
\r
for (Index = 0, PBuffer = Buffer; Index < HwAddressSize; Index++, PBuffer += 2) {\r
- UnicodeSPrint (PBuffer, 0, L"%02x", (UINTN) Mac->MacAddress.Addr[Index]);\r
+ UnicodeSPrint (PBuffer, 0, L"%02x", (UINTN)Mac->MacAddress.Addr[Index]);\r
}\r
\r
- AppendCSDStr (MappingItem, Buffer);\r
+ return AppendCSDStr (MappingItem, Buffer);\r
}\r
\r
/**\r
\r
@param[in] DevicePathNode The node to get info on.\r
@param[in] MappingItem The info item to populate.\r
+ @param[in] DevicePath Ignored.\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
+ @retval EFI_SUCCESS The appending was successful.\r
**/\r
-VOID\r
-EFIAPI\r
+EFI_STATUS\r
DevPathSerialInfiniBand (\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,\r
IN DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
)\r
{\r
+ EFI_STATUS Status;\r
INFINIBAND_DEVICE_PATH *InfiniBand;\r
UINTN Index;\r
CHAR16 Buffer[64];\r
CHAR16 *PBuffer;\r
\r
- ASSERT(DevicePathNode != NULL);\r
- ASSERT(MappingItem != NULL);\r
+ ASSERT (DevicePathNode != NULL);\r
+ ASSERT (MappingItem != NULL);\r
\r
- InfiniBand = (INFINIBAND_DEVICE_PATH *) DevicePathNode;\r
+ InfiniBand = (INFINIBAND_DEVICE_PATH *)DevicePathNode;\r
for (Index = 0, PBuffer = Buffer; Index < 16; Index++, PBuffer += 2) {\r
- UnicodeSPrint (PBuffer, 0, L"%02x", (UINTN) InfiniBand->PortGid[Index]);\r
+ UnicodeSPrint (PBuffer, 0, L"%02x", (UINTN)InfiniBand->PortGid[Index]);\r
+ }\r
+\r
+ Status = AppendCSDStr (MappingItem, Buffer);\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = AppendCSDNum (MappingItem, InfiniBand->ServiceId);\r
+ }\r
+\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = AppendCSDNum (MappingItem, InfiniBand->TargetPortId);\r
+ }\r
+\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = AppendCSDNum (MappingItem, InfiniBand->DeviceId);\r
}\r
\r
- AppendCSDStr (MappingItem, Buffer);\r
- AppendCSDNum (MappingItem, InfiniBand->ServiceId);\r
- AppendCSDNum (MappingItem, InfiniBand->TargetPortId);\r
- AppendCSDNum (MappingItem, InfiniBand->DeviceId);\r
+ return Status;\r
}\r
\r
/**\r
\r
@param[in] DevicePathNode The node to get info on.\r
@param[in] MappingItem The info item to populate.\r
+ @param[in] DevicePath Ignored.\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
+ @retval EFI_SUCCESS The appending was successful.\r
**/\r
-VOID\r
-EFIAPI\r
+EFI_STATUS\r
DevPathSerialIPv4 (\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,\r
IN DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
)\r
{\r
+ EFI_STATUS Status;\r
IPv4_DEVICE_PATH *Ip;\r
CHAR16 Buffer[10];\r
\r
- ASSERT(DevicePathNode != NULL);\r
- ASSERT(MappingItem != NULL);\r
+ ASSERT (DevicePathNode != NULL);\r
+ ASSERT (MappingItem != NULL);\r
\r
- Ip = (IPv4_DEVICE_PATH *) DevicePathNode;\r
+ Ip = (IPv4_DEVICE_PATH *)DevicePathNode;\r
UnicodeSPrint (\r
Buffer,\r
0,\r
L"%02x%02x%02x%02x",\r
- (UINTN) Ip->LocalIpAddress.Addr[0],\r
- (UINTN) Ip->LocalIpAddress.Addr[1],\r
- (UINTN) Ip->LocalIpAddress.Addr[2],\r
- (UINTN) Ip->LocalIpAddress.Addr[3]\r
- );\r
- AppendCSDStr (MappingItem, Buffer);\r
- AppendCSDNum (MappingItem, Ip->LocalPort);\r
- UnicodeSPrint (\r
- Buffer,\r
- 0,\r
- L"%02x%02x%02x%02x",\r
- (UINTN) Ip->RemoteIpAddress.Addr[0],\r
- (UINTN) Ip->RemoteIpAddress.Addr[1],\r
- (UINTN) Ip->RemoteIpAddress.Addr[2],\r
- (UINTN) Ip->RemoteIpAddress.Addr[3]\r
- );\r
- AppendCSDStr (MappingItem, Buffer);\r
- AppendCSDNum (MappingItem, Ip->RemotePort);\r
+ (UINTN)Ip->LocalIpAddress.Addr[0],\r
+ (UINTN)Ip->LocalIpAddress.Addr[1],\r
+ (UINTN)Ip->LocalIpAddress.Addr[2],\r
+ (UINTN)Ip->LocalIpAddress.Addr[3]\r
+ );\r
+ Status = AppendCSDStr (MappingItem, Buffer);\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = AppendCSDNum (MappingItem, Ip->LocalPort);\r
+ }\r
+\r
+ if (!EFI_ERROR (Status)) {\r
+ UnicodeSPrint (\r
+ Buffer,\r
+ 0,\r
+ L"%02x%02x%02x%02x",\r
+ (UINTN)Ip->RemoteIpAddress.Addr[0],\r
+ (UINTN)Ip->RemoteIpAddress.Addr[1],\r
+ (UINTN)Ip->RemoteIpAddress.Addr[2],\r
+ (UINTN)Ip->RemoteIpAddress.Addr[3]\r
+ );\r
+ Status = AppendCSDStr (MappingItem, Buffer);\r
+ }\r
+\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = AppendCSDNum (MappingItem, Ip->RemotePort);\r
+ }\r
+\r
+ return Status;\r
}\r
\r
/**\r
\r
@param[in] DevicePathNode The node to get info on.\r
@param[in] MappingItem The info item to populate.\r
+ @param[in] DevicePath Ignored.\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
+ @retval EFI_SUCCESS The appending was successful.\r
**/\r
-VOID\r
-EFIAPI\r
+EFI_STATUS\r
DevPathSerialIPv6 (\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,\r
IN DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
)\r
{\r
+ EFI_STATUS Status;\r
IPv6_DEVICE_PATH *Ip;\r
UINTN Index;\r
CHAR16 Buffer[64];\r
CHAR16 *PBuffer;\r
\r
- ASSERT(DevicePathNode != NULL);\r
- ASSERT(MappingItem != NULL);\r
+ ASSERT (DevicePathNode != NULL);\r
+ ASSERT (MappingItem != NULL);\r
\r
- Ip = (IPv6_DEVICE_PATH *) DevicePathNode;\r
+ Ip = (IPv6_DEVICE_PATH *)DevicePathNode;\r
for (Index = 0, PBuffer = Buffer; Index < 16; Index++, PBuffer += 2) {\r
- UnicodeSPrint (PBuffer, 0, L"%02x", (UINTN) Ip->LocalIpAddress.Addr[Index]);\r
+ UnicodeSPrint (PBuffer, 0, L"%02x", (UINTN)Ip->LocalIpAddress.Addr[Index]);\r
}\r
\r
- AppendCSDStr (MappingItem, Buffer);\r
- AppendCSDNum (MappingItem, Ip->LocalPort);\r
- for (Index = 0, PBuffer = Buffer; Index < 16; Index++, PBuffer += 2) {\r
- UnicodeSPrint (PBuffer, 0, L"%02x", (UINTN) Ip->RemoteIpAddress.Addr[Index]);\r
+ Status = AppendCSDStr (MappingItem, Buffer);\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = AppendCSDNum (MappingItem, Ip->LocalPort);\r
}\r
\r
- AppendCSDStr (MappingItem, Buffer);\r
- AppendCSDNum (MappingItem, Ip->RemotePort);\r
+ if (!EFI_ERROR (Status)) {\r
+ for (Index = 0, PBuffer = Buffer; Index < 16; Index++, PBuffer += 2) {\r
+ UnicodeSPrint (PBuffer, 0, L"%02x", (UINTN)Ip->RemoteIpAddress.Addr[Index]);\r
+ }\r
+\r
+ Status = AppendCSDStr (MappingItem, Buffer);\r
+ }\r
+\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = AppendCSDNum (MappingItem, Ip->RemotePort);\r
+ }\r
+\r
+ return Status;\r
}\r
\r
/**\r
\r
@param[in] DevicePathNode The node to get info on.\r
@param[in] MappingItem The info item to populate.\r
+ @param[in] DevicePath Ignored.\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
+ @retval EFI_SUCCESS The appending was successful.\r
**/\r
-VOID\r
-EFIAPI\r
+EFI_STATUS\r
DevPathSerialScsi (\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,\r
IN DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
)\r
{\r
+ EFI_STATUS Status;\r
SCSI_DEVICE_PATH *Scsi;\r
\r
- ASSERT(DevicePathNode != NULL);\r
- ASSERT(MappingItem != NULL);\r
+ ASSERT (DevicePathNode != NULL);\r
+ ASSERT (MappingItem != NULL);\r
+\r
+ Scsi = (SCSI_DEVICE_PATH *)DevicePathNode;\r
+ Status = AppendCSDNum (MappingItem, Scsi->Pun);\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = AppendCSDNum (MappingItem, Scsi->Lun);\r
+ }\r
\r
- Scsi = (SCSI_DEVICE_PATH *) DevicePathNode;\r
- AppendCSDNum (MappingItem, Scsi->Pun);\r
- AppendCSDNum (MappingItem, Scsi->Lun);\r
+ return Status;\r
}\r
\r
/**\r
\r
@param[in] DevicePathNode The node to get info on.\r
@param[in] MappingItem The info item to populate.\r
+ @param[in] DevicePath Ignored.\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
+ @retval EFI_SUCCESS The appending was successful.\r
**/\r
-VOID\r
-EFIAPI\r
+EFI_STATUS\r
DevPathSerial1394 (\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,\r
IN DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
)\r
{\r
- F1394_DEVICE_PATH *DevicePath_F1394;\r
- CHAR16 Buffer[20];\r
+ F1394_DEVICE_PATH *DevicePath_F1394;\r
+ CHAR16 Buffer[20];\r
\r
- ASSERT(DevicePathNode != NULL);\r
- ASSERT(MappingItem != NULL);\r
+ ASSERT (DevicePathNode != NULL);\r
+ ASSERT (MappingItem != NULL);\r
\r
- DevicePath_F1394 = (F1394_DEVICE_PATH *) DevicePathNode;\r
+ DevicePath_F1394 = (F1394_DEVICE_PATH *)DevicePathNode;\r
UnicodeSPrint (Buffer, 0, L"%lx", DevicePath_F1394->Guid);\r
- AppendCSDStr (MappingItem, Buffer);\r
+ return AppendCSDStr (MappingItem, Buffer);\r
}\r
\r
/**\r
\r
@param[in] DevicePathNode The node to get info on.\r
@param[in] MappingItem The info item to populate.\r
+ @param[in] DevicePath Ignored.\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
+ @retval EFI_SUCCESS The appending was successful.\r
**/\r
-VOID\r
-EFIAPI\r
+EFI_STATUS\r
DevPathSerialAcpi (\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,\r
IN DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
{\r
ACPI_HID_DEVICE_PATH *Acpi;\r
\r
- ASSERT(DevicePathNode != NULL);\r
- ASSERT(MappingItem != NULL);\r
+ ASSERT (DevicePathNode != NULL);\r
+ ASSERT (MappingItem != NULL);\r
\r
- Acpi = (ACPI_HID_DEVICE_PATH *) DevicePathNode;\r
+ Acpi = (ACPI_HID_DEVICE_PATH *)DevicePathNode;\r
if ((Acpi->HID & PNP_EISA_ID_MASK) == PNP_EISA_ID_CONST) {\r
if (EISA_ID_TO_NUM (Acpi->HID) == 0x0604) {\r
MappingItem->Mtd = MTDTypeFloppy;\r
- AppendCSDNum (MappingItem, Acpi->UID);\r
+ return AppendCSDNum (MappingItem, Acpi->UID);\r
}\r
}\r
+\r
+ return EFI_SUCCESS;\r
}\r
\r
/**\r
\r
@param[in] DevicePathNode Ignored.\r
@param[in] MappingItem Ignored.\r
+ @param[in] DevicePath Ignored.\r
\r
- Does nothing.\r
+ @retval EFI_OUT_OF_RESOURCES Out of resources.\r
+ @retval EFI_SUCCESS The appending was successful.\r
**/\r
-VOID\r
-EFIAPI\r
+EFI_STATUS\r
DevPathSerialDefault (\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,\r
IN DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
)\r
{\r
- return;\r
+ return EFI_SUCCESS;\r
}\r
\r
DEV_PATH_CONSIST_MAPPING_TABLE DevPathConsistMappingTable[] = {\r
@retval FALSE The node is not Hi.\r
**/\r
BOOLEAN\r
-EFIAPI\r
IsHIDevicePathNode (\r
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode\r
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode\r
)\r
{\r
ACPI_HID_DEVICE_PATH *Acpi;\r
\r
- ASSERT(DevicePathNode != NULL);\r
+ ASSERT (DevicePathNode != NULL);\r
\r
if (DevicePathNode->Type == HARDWARE_DEVICE_PATH) {\r
return TRUE;\r
}\r
\r
if (DevicePathNode->Type == ACPI_DEVICE_PATH) {\r
- Acpi = (ACPI_HID_DEVICE_PATH *) DevicePathNode;\r
+ Acpi = (ACPI_HID_DEVICE_PATH *)DevicePathNode;\r
switch (EISA_ID_TO_NUM (Acpi->HID)) {\r
- case 0x0301:\r
- case 0x0401:\r
- case 0x0501:\r
- case 0x0604:\r
- return FALSE;\r
+ case 0x0301:\r
+ case 0x0401:\r
+ case 0x0501:\r
+ case 0x0604:\r
+ return FALSE;\r
}\r
\r
return TRUE;\r
@return the device path portion that is Hi.\r
**/\r
EFI_DEVICE_PATH_PROTOCOL *\r
-EFIAPI\r
GetHIDevicePath (\r
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
)\r
{\r
UINTN NonHIDevicePathNodeCount;\r
EFI_DEVICE_PATH_PROTOCOL *HIDevicePath;\r
EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;\r
\r
- ASSERT(DevicePath != NULL);\r
+ ASSERT (DevicePath != NULL);\r
\r
- NonHIDevicePathNodeCount = 0;\r
+ NonHIDevicePathNodeCount = 0;\r
\r
- HIDevicePath = AllocateZeroPool (sizeof (EFI_DEVICE_PATH_PROTOCOL));\r
+ HIDevicePath = AllocateZeroPool (sizeof (EFI_DEVICE_PATH_PROTOCOL));\r
SetDevicePathEndNode (HIDevicePath);\r
\r
- Node.DevPath.Type = END_DEVICE_PATH_TYPE;\r
- Node.DevPath.SubType = END_INSTANCE_DEVICE_PATH_SUBTYPE;\r
- Node.DevPath.Length[0] = (UINT8)sizeof (EFI_DEVICE_PATH_PROTOCOL);\r
- Node.DevPath.Length[1] = 0;\r
+ Node.DevPath.Type = END_DEVICE_PATH_TYPE;\r
+ Node.DevPath.SubType = END_INSTANCE_DEVICE_PATH_SUBTYPE;\r
+ Node.DevPath.Length[0] = (UINT8)sizeof (EFI_DEVICE_PATH_PROTOCOL);\r
+ Node.DevPath.Length[1] = 0;\r
\r
while (!IsDevicePathEnd (DevicePath)) {\r
if (IsHIDevicePathNode (DevicePath)) {\r
} else {\r
NonHIDevicePathNodeCount++;\r
}\r
+\r
//\r
// Next device path node\r
//\r
- DevicePath = (EFI_DEVICE_PATH_PROTOCOL *) NextDevicePathNode (DevicePath);\r
+ DevicePath = (EFI_DEVICE_PATH_PROTOCOL *)NextDevicePathNode (DevicePath);\r
}\r
\r
return HIDevicePath;\r
@return EFI_SUCCESS Always returns success.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
GetDeviceConsistMappingInfo (\r
- IN DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
+ IN DEVICE_CONSIST_MAPPING_INFO *MappingItem,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
)\r
{\r
- SerialDecodeFucntion SerialFun;\r
+ EFI_STATUS Status;\r
+ SERIAL_DECODE_FUNCTION SerialFun;\r
UINTN Index;\r
EFI_DEVICE_PATH_PROTOCOL *OriginalDevicePath;\r
\r
- ASSERT(DevicePath != NULL);\r
- ASSERT(MappingItem != NULL);\r
+ ASSERT (DevicePath != NULL);\r
+ ASSERT (MappingItem != NULL);\r
\r
SetMem (&MappingItem->Csd, sizeof (POOL_PRINT), 0);\r
OriginalDevicePath = DevicePath;\r
// initialize with generic function in case nothing is found\r
//\r
for (SerialFun = DevPathSerialDefault, Index = 0; DevPathConsistMappingTable[Index].SerialFun != NULL; Index += 1) {\r
-\r
- if (DevicePathType (DevicePath) == DevPathConsistMappingTable[Index].Type &&\r
- DevicePathSubType (DevicePath) == DevPathConsistMappingTable[Index].SubType\r
- ) {\r
+ if ((DevicePathType (DevicePath) == DevPathConsistMappingTable[Index].Type) &&\r
+ (DevicePathSubType (DevicePath) == DevPathConsistMappingTable[Index].SubType)\r
+ )\r
+ {\r
SerialFun = DevPathConsistMappingTable[Index].SerialFun;\r
break;\r
}\r
}\r
\r
- SerialFun (DevicePath, MappingItem, OriginalDevicePath);\r
+ Status = SerialFun (DevicePath, MappingItem, OriginalDevicePath);\r
+ if (EFI_ERROR (Status)) {\r
+ SHELL_FREE_NON_NULL (MappingItem->Csd.Str);\r
+ return Status;\r
+ }\r
\r
//\r
// Next device path node\r
//\r
- DevicePath = (EFI_DEVICE_PATH_PROTOCOL *) NextDevicePathNode (DevicePath);\r
+ DevicePath = (EFI_DEVICE_PATH_PROTOCOL *)NextDevicePathNode (DevicePath);\r
}\r
\r
return EFI_SUCCESS;\r
EFI_STATUS\r
EFIAPI\r
ShellCommandConsistMappingInitialize (\r
- OUT EFI_DEVICE_PATH_PROTOCOL ***Table\r
+ OUT EFI_DEVICE_PATH_PROTOCOL ***Table\r
)\r
{\r
- EFI_HANDLE *HandleBuffer;\r
- UINTN HandleNum;\r
- UINTN HandleLoop;\r
- EFI_DEVICE_PATH_PROTOCOL **TempTable;\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
- EFI_DEVICE_PATH_PROTOCOL *HIDevicePath;\r
- UINTN Index;\r
- EFI_STATUS Status;\r
-\r
- HandleBuffer = NULL;\r
+ EFI_HANDLE *HandleBuffer;\r
+ UINTN HandleNum;\r
+ UINTN HandleLoop;\r
+ EFI_DEVICE_PATH_PROTOCOL **TempTable;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
+ EFI_DEVICE_PATH_PROTOCOL *HIDevicePath;\r
+ EFI_BLOCK_IO_PROTOCOL *BlockIo;\r
+ EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *SimpleFileSystem;\r
+ UINTN Index;\r
+ EFI_STATUS Status;\r
+\r
+ HandleBuffer = NULL;\r
\r
Status = gBS->LocateHandleBuffer (\r
- AllHandles,\r
- NULL,\r
- NULL,\r
- &HandleNum,\r
- &HandleBuffer\r
- );\r
- ASSERT_EFI_ERROR(Status);\r
-\r
- TempTable = AllocateZeroPool ((HandleNum + 1) * sizeof (EFI_DEVICE_PATH_PROTOCOL *));\r
+ ByProtocol,\r
+ &gEfiDevicePathProtocolGuid,\r
+ NULL,\r
+ &HandleNum,\r
+ &HandleBuffer\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
+\r
+ TempTable = AllocateZeroPool ((HandleNum + 1) * sizeof (EFI_DEVICE_PATH_PROTOCOL *));\r
if (TempTable == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
- for (HandleLoop = 0 ; HandleLoop < HandleNum ; HandleLoop++) {\r
+ for (HandleLoop = 0; HandleLoop < HandleNum; HandleLoop++) {\r
DevicePath = DevicePathFromHandle (HandleBuffer[HandleLoop]);\r
if (DevicePath == NULL) {\r
continue;\r
continue;\r
}\r
\r
+ Status = gBS->HandleProtocol (\r
+ HandleBuffer[HandleLoop],\r
+ &gEfiBlockIoProtocolGuid,\r
+ (VOID **)&BlockIo\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ Status = gBS->HandleProtocol (\r
+ HandleBuffer[HandleLoop],\r
+ &gEfiSimpleFileSystemProtocolGuid,\r
+ (VOID **)&SimpleFileSystem\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ FreePool (HIDevicePath);\r
+ continue;\r
+ }\r
+ }\r
+\r
for (Index = 0; TempTable[Index] != NULL; Index++) {\r
if (DevicePathCompare (&TempTable[Index], &HIDevicePath) == 0) {\r
FreePool (HIDevicePath);\r
}\r
}\r
\r
- for (Index = 0; TempTable[Index] != NULL; Index++);\r
- PerformQuickSort(TempTable, Index, sizeof(EFI_DEVICE_PATH_PROTOCOL*), DevicePathCompare);\r
+ for (Index = 0; TempTable[Index] != NULL; Index++) {\r
+ }\r
+\r
+ PerformQuickSort (TempTable, Index, sizeof (EFI_DEVICE_PATH_PROTOCOL *), DevicePathCompare);\r
*Table = TempTable;\r
\r
if (HandleBuffer != NULL) {\r
EFI_STATUS\r
EFIAPI\r
ShellCommandConsistMappingUnInitialize (\r
- EFI_DEVICE_PATH_PROTOCOL **Table\r
+ EFI_DEVICE_PATH_PROTOCOL **Table\r
)\r
{\r
- UINTN Index;\r
+ UINTN Index;\r
\r
- ASSERT(Table != NULL);\r
+ ASSERT (Table != NULL);\r
\r
for (Index = 0; Table[Index] != NULL; Index++) {\r
FreePool (Table[Index]);\r
CHAR16 *\r
EFIAPI\r
ShellCommandConsistMappingGenMappingName (\r
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
- IN EFI_DEVICE_PATH_PROTOCOL **Table\r
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
+ IN EFI_DEVICE_PATH_PROTOCOL **Table\r
)\r
{\r
- POOL_PRINT Str;\r
- DEVICE_CONSIST_MAPPING_INFO MappingInfo;\r
- EFI_DEVICE_PATH_PROTOCOL *HIDevicePath;\r
- UINTN Index;\r
- UINTN NewSize;\r
+ EFI_STATUS Status;\r
+ POOL_PRINT Str;\r
+ DEVICE_CONSIST_MAPPING_INFO MappingInfo;\r
+ EFI_DEVICE_PATH_PROTOCOL *HIDevicePath;\r
+ UINTN Index;\r
\r
- ASSERT(DevicePath != NULL);\r
- ASSERT(Table != NULL);\r
+ ASSERT (DevicePath != NULL);\r
+ ASSERT (Table != NULL);\r
\r
HIDevicePath = GetHIDevicePath (DevicePath);\r
if (HIDevicePath == NULL) {\r
MappingInfo.Mtd = MTDTypeUnknown;\r
MappingInfo.Digital = FALSE;\r
\r
- GetDeviceConsistMappingInfo (&MappingInfo, DevicePath);\r
+ Status = GetDeviceConsistMappingInfo (&MappingInfo, DevicePath);\r
+ if (EFI_ERROR (Status)) {\r
+ return NULL;\r
+ }\r
\r
SetMem (&Str, sizeof (Str), 0);\r
for (Index = 0; mMTDName[Index].MTDType != MTDTypeEnd; Index++) {\r
}\r
\r
if (mMTDName[Index].MTDType != MTDTypeEnd) {\r
- CatPrint (&Str, L"%s", mMTDName[Index].Name);\r
+ Status = CatPrint (&Str, L"%s", mMTDName[Index].Name);\r
+ }\r
+\r
+ if (!EFI_ERROR (Status)) {\r
+ Status = CatPrint (&Str, L"%d", (UINTN)MappingInfo.Hi);\r
}\r
\r
- CatPrint (&Str, L"%d", (UINTN) MappingInfo.Hi);\r
- if (MappingInfo.Csd.Str != NULL) {\r
- CatPrint (&Str, L"%s", MappingInfo.Csd.Str);\r
+ if (!EFI_ERROR (Status) && (MappingInfo.Csd.Str != NULL)) {\r
+ Status = CatPrint (&Str, L"%s", MappingInfo.Csd.Str);\r
FreePool (MappingInfo.Csd.Str);\r
}\r
\r
- if (Str.Str != NULL) {\r
- CatPrint (&Str, L":");\r
+ if (!EFI_ERROR (Status) && (Str.Str != NULL)) {\r
+ Status = CatPrint (&Str, L":");\r
}\r
\r
- NewSize = (Str.Len + 1) * sizeof (CHAR16);\r
- Str.Str = ReallocatePool (Str.Len, NewSize, Str.Str);\r
- if (Str.Str == NULL) {\r
- return (NULL);\r
+ if (EFI_ERROR (Status)) {\r
+ SHELL_FREE_NON_NULL (Str.Str);\r
+ return NULL;\r
}\r
- Str.Str[Str.Len] = CHAR_NULL;\r
+\r
return Str.Str;\r
}\r
\r
SHELL_MAP_LIST *\r
EFIAPI\r
ShellCommandFindMapItem (\r
- IN CONST CHAR16 *MapKey\r
+ IN CONST CHAR16 *MapKey\r
)\r
{\r
- SHELL_MAP_LIST *MapListItem;\r
+ SHELL_MAP_LIST *MapListItem;\r
\r
- for ( MapListItem = (SHELL_MAP_LIST *)GetFirstNode(&gShellMapList.Link)\r
- ; !IsNull(&gShellMapList.Link, &MapListItem->Link)\r
- ; MapListItem = (SHELL_MAP_LIST *)GetNextNode(&gShellMapList.Link, &MapListItem->Link)\r
- ){\r
- if (gUnicodeCollation->StriColl(gUnicodeCollation,MapListItem->MapName,(CHAR16*)MapKey) == 0) {\r
+ for ( MapListItem = (SHELL_MAP_LIST *)GetFirstNode (&gShellMapList.Link)\r
+ ; !IsNull (&gShellMapList.Link, &MapListItem->Link)\r
+ ; MapListItem = (SHELL_MAP_LIST *)GetNextNode (&gShellMapList.Link, &MapListItem->Link)\r
+ )\r
+ {\r
+ if (gUnicodeCollation->StriColl (gUnicodeCollation, MapListItem->MapName, (CHAR16 *)MapKey) == 0) {\r
return (MapListItem);\r
}\r
}\r
+\r
return (NULL);\r
}\r
-\r
-\r