// Definitions\r
//\r
\r
-#define PEI_FAT_CACHE_SIZE 4\r
-#define PEI_FAT_MAX_BLOCK_SIZE 8192\r
-#define FAT_MAX_FILE_NAME_LENGTH 128\r
-#define PEI_FAT_MAX_BLOCK_DEVICE 64\r
-#define PEI_FAT_MAX_BLOCK_IO_PPI 32\r
-#define PEI_FAT_MAX_VOLUME 64\r
+#define PEI_FAT_CACHE_SIZE 4\r
+#define PEI_FAT_MAX_BLOCK_SIZE 8192\r
+#define FAT_MAX_FILE_NAME_LENGTH 128\r
+#define PEI_FAT_MAX_BLOCK_DEVICE 64\r
+#define PEI_FAT_MAX_BLOCK_IO_PPI 32\r
+#define PEI_FAT_MAX_VOLUME 64\r
\r
-#define PEI_FAT_MEMORY_PAGE_SIZE 0x1000\r
+#define PEI_FAT_MEMORY_PAGE_SIZE 0x1000\r
\r
//\r
// Data Structures\r
// The block device\r
//\r
typedef struct {\r
-\r
- UINT32 BlockSize;\r
- UINT64 LastBlock;\r
- UINT32 IoAlign;\r
- BOOLEAN Logical;\r
- BOOLEAN PartitionChecked;\r
+ UINT32 BlockSize;\r
+ UINT64 LastBlock;\r
+ UINT32 IoAlign;\r
+ BOOLEAN Logical;\r
+ BOOLEAN PartitionChecked;\r
\r
//\r
// Following fields only valid for logical device\r
//\r
- CHAR8 PartitionFlag[8];\r
- UINT64 StartingPos;\r
- UINTN ParentDevNo;\r
+ CHAR8 PartitionFlag[8];\r
+ UINT64 StartingPos;\r
+ UINTN ParentDevNo;\r
\r
//\r
// Following fields only valid for physical device\r
//\r
- EFI_PEI_BLOCK_DEVICE_TYPE DevType;\r
- UINT8 InterfaceType;\r
+ EFI_PEI_BLOCK_DEVICE_TYPE DevType;\r
+ UINT8 InterfaceType;\r
//\r
// EFI_PEI_READ_BLOCKS ReadFunc;\r
//\r
- EFI_PEI_RECOVERY_BLOCK_IO_PPI *BlockIo;\r
- EFI_PEI_RECOVERY_BLOCK_IO2_PPI *BlockIo2;\r
- UINT8 PhysicalDevNo;\r
+ EFI_PEI_RECOVERY_BLOCK_IO_PPI *BlockIo;\r
+ EFI_PEI_RECOVERY_BLOCK_IO2_PPI *BlockIo2;\r
+ UINT8 PhysicalDevNo;\r
} PEI_FAT_BLOCK_DEVICE;\r
\r
//\r
// the Volume structure\r
//\r
typedef struct {\r
-\r
- UINTN BlockDeviceNo;\r
- UINTN VolumeNo;\r
- UINT64 VolumeSize;\r
- UINTN MaxCluster;\r
- CHAR16 VolumeLabel[FAT_MAX_FILE_NAME_LENGTH];\r
- PEI_FAT_TYPE FatType;\r
- UINT64 FatPos;\r
- UINT32 SectorSize;\r
- UINT32 ClusterSize;\r
- UINT64 FirstClusterPos;\r
- UINT64 RootDirPos;\r
- UINT32 RootEntries;\r
- UINT32 RootDirCluster;\r
-\r
+ UINTN BlockDeviceNo;\r
+ UINTN VolumeNo;\r
+ UINT64 VolumeSize;\r
+ UINTN MaxCluster;\r
+ CHAR16 VolumeLabel[FAT_MAX_FILE_NAME_LENGTH];\r
+ PEI_FAT_TYPE FatType;\r
+ UINT64 FatPos;\r
+ UINT32 SectorSize;\r
+ UINT32 ClusterSize;\r
+ UINT64 FirstClusterPos;\r
+ UINT64 RootDirPos;\r
+ UINT32 RootEntries;\r
+ UINT32 RootDirCluster;\r
} PEI_FAT_VOLUME;\r
\r
//\r
// File instance\r
//\r
typedef struct {\r
+ PEI_FAT_VOLUME *Volume;\r
+ CHAR16 FileName[FAT_MAX_FILE_NAME_LENGTH];\r
\r
- PEI_FAT_VOLUME *Volume;\r
- CHAR16 FileName[FAT_MAX_FILE_NAME_LENGTH];\r
-\r
- BOOLEAN IsFixedRootDir;\r
+ BOOLEAN IsFixedRootDir;\r
\r
- UINT32 StartingCluster;\r
- UINT32 CurrentPos;\r
- UINT32 StraightReadAmount;\r
- UINT32 CurrentCluster;\r
-\r
- UINT8 Attributes;\r
- UINT32 FileSize;\r
+ UINT32 StartingCluster;\r
+ UINT32 CurrentPos;\r
+ UINT32 StraightReadAmount;\r
+ UINT32 CurrentCluster;\r
\r
+ UINT8 Attributes;\r
+ UINT32 FileSize;\r
} PEI_FAT_FILE;\r
\r
//\r
// Cache Buffer\r
//\r
typedef struct {\r
-\r
- BOOLEAN Valid;\r
- UINTN BlockDeviceNo;\r
- UINT64 Lba;\r
- UINT32 Lru;\r
- UINT64 Buffer[PEI_FAT_MAX_BLOCK_SIZE / 8];\r
- UINTN Size;\r
-\r
+ BOOLEAN Valid;\r
+ UINTN BlockDeviceNo;\r
+ UINT64 Lba;\r
+ UINT32 Lru;\r
+ UINT64 Buffer[PEI_FAT_MAX_BLOCK_SIZE / 8];\r
+ UINTN Size;\r
} PEI_FAT_CACHE_BUFFER;\r
\r
//\r
#define PEI_FAT_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('p', 'f', 'a', 't')\r
\r
typedef struct {\r
-\r
- UINTN Signature;\r
- EFI_PEI_DEVICE_RECOVERY_MODULE_PPI DeviceRecoveryPpi;\r
- EFI_PEI_PPI_DESCRIPTOR PpiDescriptor;\r
- EFI_PEI_NOTIFY_DESCRIPTOR NotifyDescriptor[2];\r
-\r
- UINT8 UnicodeCaseMap[0x300];\r
- CHAR8 *EngUpperMap;\r
- CHAR8 *EngLowerMap;\r
- CHAR8 *EngInfoMap;\r
-\r
- UINT64 BlockData[PEI_FAT_MAX_BLOCK_SIZE / 8];\r
- UINTN BlockDeviceCount;\r
- PEI_FAT_BLOCK_DEVICE BlockDevice[PEI_FAT_MAX_BLOCK_DEVICE];\r
- UINTN VolumeCount;\r
- PEI_FAT_VOLUME Volume[PEI_FAT_MAX_VOLUME];\r
- PEI_FAT_FILE File;\r
- PEI_FAT_CACHE_BUFFER CacheBuffer[PEI_FAT_CACHE_SIZE];\r
-\r
+ UINTN Signature;\r
+ EFI_PEI_DEVICE_RECOVERY_MODULE_PPI DeviceRecoveryPpi;\r
+ EFI_PEI_PPI_DESCRIPTOR PpiDescriptor;\r
+ EFI_PEI_NOTIFY_DESCRIPTOR NotifyDescriptor[2];\r
+\r
+ UINT8 UnicodeCaseMap[0x300];\r
+ CHAR8 *EngUpperMap;\r
+ CHAR8 *EngLowerMap;\r
+ CHAR8 *EngInfoMap;\r
+\r
+ UINT64 BlockData[PEI_FAT_MAX_BLOCK_SIZE / 8];\r
+ UINTN BlockDeviceCount;\r
+ PEI_FAT_BLOCK_DEVICE BlockDevice[PEI_FAT_MAX_BLOCK_DEVICE];\r
+ UINTN VolumeCount;\r
+ PEI_FAT_VOLUME Volume[PEI_FAT_MAX_VOLUME];\r
+ PEI_FAT_FILE File;\r
+ PEI_FAT_CACHE_BUFFER CacheBuffer[PEI_FAT_CACHE_SIZE];\r
} PEI_FAT_PRIVATE_DATA;\r
\r
#define PEI_FAT_PRIVATE_DATA_FROM_THIS(a) \\r
#define UNPACK_UINT32(a) \\r
(UINT32) ((((UINT8 *) a)[0] << 0) | (((UINT8 *) a)[1] << 8) | (((UINT8 *) a)[2] << 16) | (((UINT8 *) a)[3] << 24))\r
\r
-\r
//\r
// API functions\r
//\r
OUT PEI_FILE_HANDLE *Handle\r
);\r
\r
-\r
/**\r
Returns the number of DXE capsules residing on the device.\r
This function, by whatever mechanism, searches for DXE capsules from the associated device and\r
EFI_STATUS\r
EFIAPI\r
GetNumberRecoveryCapsules (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI *This,\r
- OUT UINTN *NumberRecoveryCapsules\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI *This,\r
+ OUT UINTN *NumberRecoveryCapsules\r
);\r
\r
-\r
/**\r
Returns the size and type of the requested recovery capsule.\r
This function returns the size and type of the capsule specified by CapsuleInstance.\r
EFI_STATUS\r
EFIAPI\r
GetRecoveryCapsuleInfo (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI *This,\r
- IN UINTN CapsuleInstance,\r
- OUT UINTN *Size,\r
- OUT EFI_GUID *CapsuleType\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI *This,\r
+ IN UINTN CapsuleInstance,\r
+ OUT UINTN *Size,\r
+ OUT EFI_GUID *CapsuleType\r
);\r
\r
-\r
/**\r
Loads a DXE capsule from some media into memory.\r
\r
EFI_STATUS\r
EFIAPI\r
LoadRecoveryCapsule (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI *This,\r
- IN UINTN CapsuleInstance,\r
- OUT VOID *Buffer\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI *This,\r
+ IN UINTN CapsuleInstance,\r
+ OUT VOID *Buffer\r
);\r
\r
-\r
/**\r
This version is different from the version in Unicode collation\r
protocol in that this version strips off trailing blanks.\r
**/\r
VOID\r
EngFatToStr (\r
- IN UINTN FatSize,\r
- IN CHAR8 *Fat,\r
- OUT CHAR16 *Str\r
+ IN UINTN FatSize,\r
+ IN CHAR8 *Fat,\r
+ OUT CHAR16 *Str\r
);\r
\r
-\r
/**\r
Performs a case-insensitive comparison of two Null-terminated Unicode strings.\r
\r
IN CHAR16 *Str2\r
);\r
\r
-\r
/**\r
Reads a block of data from the block device by calling\r
underlying Block I/O service.\r
**/\r
EFI_STATUS\r
FatReadBlock (\r
- IN PEI_FAT_PRIVATE_DATA *PrivateData,\r
- IN UINTN BlockDeviceNo,\r
- IN EFI_PEI_LBA Lba,\r
- IN UINTN BufferSize,\r
- OUT VOID *Buffer\r
+ IN PEI_FAT_PRIVATE_DATA *PrivateData,\r
+ IN UINTN BlockDeviceNo,\r
+ IN EFI_PEI_LBA Lba,\r
+ IN UINTN BufferSize,\r
+ OUT VOID *Buffer\r
);\r
\r
-\r
/**\r
Check if there is a valid FAT in the corresponding Block device\r
of the volume and if yes, fill in the relevant fields for the\r
IN OUT PEI_FAT_VOLUME *Volume\r
);\r
\r
-\r
/**\r
Gets the next cluster in the cluster chain.\r
\r
OUT UINT32 *NextCluster\r
);\r
\r
-\r
/**\r
Disk reading.\r
\r
OUT VOID *Buffer\r
);\r
\r
-\r
/**\r
Set a file's CurrentPos and CurrentCluster, then compute StraightReadAmount.\r
\r
IN UINT32 Pos\r
);\r
\r
-\r
/**\r
Reads file data. Updates the file's CurrentPos.\r
\r
OUT VOID *Buffer\r
);\r
\r
-\r
/**\r
This function reads the next item in the parent directory and\r
initializes the output parameter SubFile (CurrentPos is initialized to 0).\r
OUT PEI_FAT_FILE *SubFile\r
);\r
\r
-\r
/**\r
This function finds partitions (logical devices) in physical block devices.\r
\r