static VOID _DevPathHardDrive ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { HARDDRIVE_DEVICE_PATH *Hd; Hd = DevPath; switch (Hd->SignatureType) { case SIGNATURE_TYPE_MBR: CatPrint(Str, L"HD(Part%d,Sig%08X)", Hd->PartitionNumber, *((UINT32 *)(&(Hd->Signature[0]))) ); break; case SIGNATURE_TYPE_GUID: CatPrint(Str, L"HD(Part%d,Sig%g)", Hd->PartitionNumber, (EFI_GUID *) &(Hd->Signature[0]) ); break; default: CatPrint(Str, L"HD(Part%d,MBRType=%02x,SigType=%02x)", Hd->PartitionNumber, Hd->MBRType, Hd->SignatureType ); break; } }
static VOID _DevPathMacAddr ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { MAC_ADDR_DEVICE_PATH *MAC; UINTN HwAddressSize; UINTN Index; MAC = DevPath; /* HwAddressSize = sizeof(EFI_MAC_ADDRESS); */ HwAddressSize = DevicePathNodeLength( & MAC-> Header ) ; HwAddressSize -= sizeof( MAC-> Header ) ; HwAddressSize -= sizeof( MAC-> IfType ) ; if (MAC->IfType == 0x01 || MAC->IfType == 0x00) { HwAddressSize = 6; } CatPrint(Str, L"Mac("); for(Index = 0; Index < HwAddressSize; Index++) { CatPrint(Str, L"%02x",MAC->MacAddress.Addr[Index]); } if ( MAC-> IfType != 0 ) { CatPrint(Str, L",%d" , MAC-> IfType ) ; } CatPrint(Str, L")"); }
static VOID _DevPathVendor ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { VENDOR_DEVICE_PATH *Vendor; CHAR16 *Type; UNKNOWN_DEVICE_VENDOR_DEVICE_PATH *UnknownDevPath; Vendor = DevPath; switch (DevicePathType(&Vendor->Header)) { case HARDWARE_DEVICE_PATH: Type = L"Hw"; break; case MESSAGING_DEVICE_PATH: Type = L"Msg"; break; case MEDIA_DEVICE_PATH: Type = L"Media"; break; default: Type = L"?"; break; } CatPrint(Str, L"Ven%s(%g", Type, &Vendor->Guid); if (CompareGuid (&Vendor->Guid, &UnknownDevice) == 0) { // // GUID used by EFI to enumerate an EDD 1.1 device // UnknownDevPath = (UNKNOWN_DEVICE_VENDOR_DEVICE_PATH *)Vendor; CatPrint(Str, L":%02x)", UnknownDevPath->LegacyDriveLetter); } else { CatPrint(Str, L")"); } }
CHAR16 * ConsistMappingGenMappingName ( EFI_DEVICE_PATH_PROTOCOL *DevicePath, EFI_DEVICE_PATH_PROTOCOL **HIDevicePathTable ) { POOL_PRINT Str; DEVICE_CONSIST_MAPPING_INFO MappingInfo; EFI_DEVICE_PATH_PROTOCOL *HIDevicePath; UINTN Index; UINTN NewSize; HIDevicePath = GetHIDevicePath (DevicePath); if (HIDevicePath == NULL) { return NULL; } for (Index = 0; HIDevicePathTable[Index] != NULL; Index++) { if (DevicePathCompare (HIDevicePathTable[Index], HIDevicePath) == 0) { break; } } FreePool (HIDevicePath); if (HIDevicePathTable[Index] == NULL) { return NULL; } MappingInfo.HI = Index; MappingInfo.MTD = MTDTypeUnknown; MappingInfo.Digital = FALSE; GetDeviceConsistMappingInfo (&MappingInfo, DevicePath); SetMem (&Str, sizeof (Str), 0); for (Index = 0; mMTDName[Index].MTDType != MTDTypeEnd; Index++) { if (MappingInfo.MTD == mMTDName[Index].MTDType) { break; } } if (mMTDName[Index].MTDType != MTDTypeEnd) { CatPrint (&Str, L"%s", mMTDName[Index].Name); } CatPrint (&Str, L"%d", (UINTN) MappingInfo.HI); if (MappingInfo.CSD.str != NULL) { CatPrint (&Str, L"%s", MappingInfo.CSD.str); FreePool (MappingInfo.CSD.str); } NewSize = (Str.len + 1) * sizeof (CHAR16); Str.str = ReallocatePool (Str.str, NewSize, NewSize); Str.str[Str.len] = 0; return Str.str; }
static VOID CatPrintNetworkProtocol( IN OUT POOL_PRINT * Str , IN UINT16 Proto ) { if ( Proto == 6 ) { CatPrint( Str , L"TCP" ) ; } else if ( Proto == 17 ) { CatPrint( Str , L"UDP" ) ; } else { CatPrint( Str , L"%d" , Proto ) ; } }
VOID _DevPathAcpi ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { ACPI_HID_DEVICE_PATH *Acpi; Acpi = DevPath; if ((Acpi->HID & PNP_EISA_ID_MASK) == PNP_EISA_ID_CONST) { CatPrint(Str, L"Acpi(PNP%04x,%x)", EISA_ID_TO_NUM (Acpi->HID), Acpi->UID); } else { CatPrint(Str, L"Acpi(%08x,%x)", Acpi->HID, Acpi->UID); } }
static VOID _DevPathEndInstance ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { CatPrint(Str, L","); }
VOID _DevPathNodeUnknown ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { CatPrint(Str, L"?"); }
static VOID _DevPathIPv6 ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { IPv6_DEVICE_PATH *IP; IP = DevPath; CatPrint( Str , L"IPv6(") ; CatPrintIPv6( Str , & IP-> RemoteIpAddress ) ; CatPrint( Str , L",") ; CatPrintNetworkProtocol( Str, IP-> Protocol ) ; CatPrint( Str , L",%s," , IP-> IPAddressOrigin ? ( IP-> IPAddressOrigin == 1 ? L"StatelessAutoConfigure" : L"StatefulAutoConfigure" ) : L"Static" ) ; CatPrintIPv6( Str , & IP-> LocalIpAddress ) ; if ( DevicePathNodeLength( & IP-> Header ) == sizeof( IPv6_DEVICE_PATH ) ) { CatPrint( Str , L",") ; CatPrintIPv6( Str , & IP-> GatewayIpAddress ) ; CatPrint( Str , L",") ; CatPrint( Str , L"%d" , & IP-> PrefixLength ) ; } CatPrint( Str , L")") ; }
static VOID CatPrintIPv4( IN OUT POOL_PRINT * Str , IN EFI_IPv4_ADDRESS * Address ) { CatPrint( Str , L"%d.%d.%d.%d" , Address-> Addr[ 0 ] , Address-> Addr[ 1 ] , Address-> Addr[ 2 ] , Address-> Addr[ 3 ] ) ; }
VOID _DevPathPccard ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { PCCARD_DEVICE_PATH *Pccard; Pccard = DevPath; CatPrint(Str, L"Pccard(Socket%x)", Pccard->SocketNumber); }
static VOID _DevPathI2O ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { I2O_DEVICE_PATH *I2O; I2O = DevPath; CatPrint(Str, L"I2O(0x%X)", I2O->Tid); }
static VOID _DevPathUsb ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { USB_DEVICE_PATH *Usb; Usb = DevPath; CatPrint( Str , L"Usb(0x%x,0x%x)" , Usb-> Port , Usb-> Endpoint ) ; }
static VOID _DevPath1394 ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { F1394_DEVICE_PATH *F1394; F1394 = DevPath; CatPrint(Str, L"1394(%g)", &F1394->Guid); }
static VOID _DevPathScsi ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { SCSI_DEVICE_PATH *Scsi; Scsi = DevPath; CatPrint(Str, L"Scsi(%d,%d)", Scsi->Pun, Scsi->Lun); }
VOID _DevPathUsb ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { USB_DEVICE_PATH *Usb; Usb = DevPath; CatPrint(Str, L"Usb(%x, %x)", Usb->ParentPortNumber, Usb->InterfaceNumber); }
static VOID _DevPathPccard ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { PCCARD_DEVICE_PATH *Pccard; Pccard = DevPath; CatPrint(Str, L"Pccard(0x%x)", Pccard-> FunctionNumber ); }
static VOID _DevPathPci ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { PCI_DEVICE_PATH *Pci; Pci = DevPath; CatPrint(Str, L"Pci(0x%x,0x%x)", Pci->Device, Pci->Function); }
VOID _DevPathFibre ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { FIBRECHANNEL_DEVICE_PATH *Fibre; Fibre = DevPath; CatPrint(Str, L"Fibre(%lx)", Fibre->WWN); }
VOID _DevPathUsb ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { USB_DEVICE_PATH *Usb; Usb = DevPath; CatPrint(Str, L"Usb(%x)", Usb->Port); }
VOID _DevPathIPv6 ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { IPv6_DEVICE_PATH *IP; IP = DevPath; CatPrint(Str, L"IP-v6(not-done)"); }
VOID _DevPathInfiniBand ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { INFINIBAND_DEVICE_PATH *InfiniBand; InfiniBand = DevPath; CatPrint(Str, L"InfiniBand(not-done)"); }
static VOID _DevPathMediaProtocol ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { MEDIA_PROTOCOL_DEVICE_PATH *MediaProt; MediaProt = DevPath; CatPrint(Str, L"%g", &MediaProt->Protocol); }
static VOID _DevPathFilePath ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { FILEPATH_DEVICE_PATH *Fp; Fp = DevPath; CatPrint(Str, L"%s", Fp->PathName); }
VOID _DevPathFvFilePath ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *FvFilePath; FvFilePath = DevPath; CatPrint(Str, L"%g", &FvFilePath->NameGuid); }
static VOID _DevPathCDROM ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { CDROM_DEVICE_PATH *Cd; Cd = DevPath; CatPrint( Str , L"CDROM(0x%x)" , Cd-> BootEntry ) ; }
static VOID _DevPathNodeUnknown ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { EFI_DEVICE_PATH * Path ; UINT8 * value ; int length , index ; Path = DevPath ; value = DevPath ; value += 4 ; switch ( Path-> Type ) { case HARDWARE_DEVICE_PATH : { /* Unknown Hardware Device Path */ CatPrint( Str , L"HardwarePath(%d" , Path-> SubType ) ; break ; } case ACPI_DEVICE_PATH : { /* Unknown ACPI Device Path */ CatPrint( Str , L"AcpiPath(%d" , Path-> SubType ) ; break ; } case MESSAGING_DEVICE_PATH : { /* Unknown Messaging Device Path */ CatPrint( Str , L"Msg(%d" , Path-> SubType ) ; break ; } case MEDIA_DEVICE_PATH : { /* Unknown Media Device Path */ CatPrint( Str , L"MediaPath(%d" , Path-> SubType ) ; break ; } case BBS_DEVICE_PATH : { /* Unknown BIOS Boot Specification Device Path */ CatPrint( Str , L"BbsPath(%d" , Path-> SubType ) ; break ; } default : { /* Unknown Device Path */ CatPrint( Str , L"Path(%d,%d" , Path-> Type , Path-> SubType ) ; break ; } } length = DevicePathNodeLength( Path ) ; for ( index = 0 ; index < length ; index ++ ) { if ( index == 0 ) CatPrint( Str , L",0x" ) ; CatPrint( Str , L"%02x" , * value ) ; value ++ ; } CatPrint( Str , L")" ) ; }
static VOID _DevPathUri ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { URI_DEVICE_PATH *Uri; Uri = DevPath; CatPrint( Str, L"Uri(%a)", Uri->Uri ); }
static VOID _DevPathSata ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { SATA_DEVICE_PATH * Sata ; Sata = DevPath; CatPrint( Str , L"Sata(0x%x,0x%x,0x%x)" , Sata-> HBAPortNumber , Sata-> PortMultiplierPortNumber , Sata-> Lun ) ; }
static VOID _DevPathInfiniBand ( IN OUT POOL_PRINT *Str, IN VOID *DevPath ) { INFINIBAND_DEVICE_PATH *InfiniBand; InfiniBand = DevPath; CatPrint( Str , L"Infiniband(0x%x,%g,0x%lx,0x%lx,0x%lx)" , InfiniBand-> ResourceFlags , InfiniBand-> PortGid , InfiniBand-> ServiceId , InfiniBand-> TargetPortId , InfiniBand-> DeviceId ) ; }