return EFI_SUCCESS;\r
}\r
\r
+STATIC\r
+EFI_STATUS\r
+GetBootMonFsFileInfo (\r
+ IN BOOTMON_FS_INSTANCE *Instance,\r
+ IN BOOTMON_FS_FILE *File,\r
+ IN OUT UINTN *BufferSize,\r
+ OUT VOID *Buffer\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+ BOOTMON_FS_FILE_INFO *Info;\r
+ UINTN ResultSize;\r
+ UINTN Index;\r
+\r
+ if (File == Instance->RootFile) {\r
+ Status = EFI_UNSUPPORTED;\r
+ } else {\r
+ ResultSize = SIZE_OF_BOOTMON_FS_FILE_INFO;\r
+\r
+ if (*BufferSize < ResultSize) {\r
+ *BufferSize = ResultSize;\r
+ Status = EFI_BUFFER_TOO_SMALL;\r
+ } else {\r
+ Info = Buffer;\r
+\r
+ // Zero out the structure\r
+ ZeroMem (Info, ResultSize);\r
+\r
+ // Fill in the structure\r
+ Info->Size = ResultSize;\r
+\r
+ Info->EntryPoint = File->HwDescription.EntryPoint;\r
+ Info->RegionCount = File->HwDescription.RegionCount;\r
+ for (Index = 0; Index < File->HwDescription.RegionCount; Index++) {\r
+ Info->Region[Index].LoadAddress = File->HwDescription.Region[Index].LoadAddress;\r
+ Info->Region[Index].Size = File->HwDescription.Region[Index].Size;\r
+ Info->Region[Index].Offset = File->HwDescription.Region[Index].Offset;\r
+ Info->Region[Index].Checksum = File->HwDescription.Region[Index].Checksum;\r
+ }\r
+ *BufferSize = ResultSize;\r
+ Status = EFI_SUCCESS;\r
+ }\r
+ }\r
+\r
+ return Status;\r
+}\r
+\r
STATIC\r
EFI_STATUS\r
SetFileName (\r
Status = GetFilesystemInfo (Instance, BufferSize, Buffer);\r
} else if (CompareGuid (InformationType, &gEfiFileInfoGuid) != 0) {\r
Status = GetFileInfo (Instance, File, BufferSize, Buffer);\r
+ } else if (CompareGuid (InformationType, &gArmBootMonFsFileInfoGuid) != 0) {\r
+ Status = GetBootMonFsFileInfo (Instance, File, BufferSize, Buffer);\r
} else {\r
Status = EFI_UNSUPPORTED;\r
}\r