\r
#pragma pack (1)\r
typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL FilePathHeader;\r
- CHAR16 FilePath[ARRAY_SIZE (L"kernel")];\r
+ EFI_DEVICE_PATH_PROTOCOL FilePathHeader;\r
+ CHAR16 FilePath[ARRAY_SIZE (L"kernel")];\r
} KERNEL_FILE_DEVPATH;\r
\r
typedef struct {\r
- VENDOR_DEVICE_PATH VenMediaNode;\r
- KERNEL_FILE_DEVPATH FileNode;\r
- EFI_DEVICE_PATH_PROTOCOL EndNode;\r
+ VENDOR_DEVICE_PATH VenMediaNode;\r
+ KERNEL_FILE_DEVPATH FileNode;\r
+ EFI_DEVICE_PATH_PROTOCOL EndNode;\r
} KERNEL_VENMEDIA_FILE_DEVPATH;\r
\r
typedef struct {\r
- VENDOR_DEVICE_PATH VenMediaNode;\r
- EFI_DEVICE_PATH_PROTOCOL EndNode;\r
+ VENDOR_DEVICE_PATH VenMediaNode;\r
+ EFI_DEVICE_PATH_PROTOCOL EndNode;\r
} SINGLE_VENMEDIA_NODE_DEVPATH;\r
#pragma pack ()\r
\r
-STATIC CONST KERNEL_VENMEDIA_FILE_DEVPATH mKernelDevicePath = {\r
+STATIC CONST KERNEL_VENMEDIA_FILE_DEVPATH mKernelDevicePath = {\r
{\r
{\r
MEDIA_DEVICE_PATH, MEDIA_VENDOR_DP,\r
- { sizeof (VENDOR_DEVICE_PATH) }\r
+ { sizeof (VENDOR_DEVICE_PATH) }\r
},\r
QEMU_KERNEL_LOADER_FS_MEDIA_GUID\r
- }, {\r
+ }, {\r
{\r
MEDIA_DEVICE_PATH, MEDIA_FILEPATH_DP,\r
- { sizeof (KERNEL_FILE_DEVPATH) }\r
+ { sizeof (KERNEL_FILE_DEVPATH) }\r
},\r
L"kernel",\r
- }, {\r
+ }, {\r
END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE,\r
{ sizeof (EFI_DEVICE_PATH_PROTOCOL) }\r
}\r
};\r
\r
-STATIC CONST SINGLE_VENMEDIA_NODE_DEVPATH mQemuKernelLoaderFsDevicePath = {\r
+STATIC CONST SINGLE_VENMEDIA_NODE_DEVPATH mQemuKernelLoaderFsDevicePath = {\r
{\r
{\r
MEDIA_DEVICE_PATH, MEDIA_VENDOR_DP,\r
- { sizeof (VENDOR_DEVICE_PATH) }\r
+ { sizeof (VENDOR_DEVICE_PATH) }\r
},\r
QEMU_KERNEL_LOADER_FS_MEDIA_GUID\r
- }, {\r
+ }, {\r
END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE,\r
{ sizeof (EFI_DEVICE_PATH_PROTOCOL) }\r
}\r
STATIC\r
EFI_STATUS\r
GetQemuKernelLoaderBlobSize (\r
- IN EFI_FILE_HANDLE Root,\r
- IN CHAR16 *FileName,\r
- OUT UINTN *Size\r
+ IN EFI_FILE_HANDLE Root,\r
+ IN CHAR16 *FileName,\r
+ OUT UINTN *Size\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_FILE_HANDLE FileHandle;\r
- UINT64 FileSize;\r
+ EFI_STATUS Status;\r
+ EFI_FILE_HANDLE FileHandle;\r
+ UINT64 FileSize;\r
\r
Status = Root->Open (Root, &FileHandle, FileName, EFI_FILE_MODE_READ, 0);\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
+\r
Status = FileHandleGetSize (FileHandle, &FileSize);\r
if (EFI_ERROR (Status)) {\r
goto CloseFile;\r
}\r
+\r
if (FileSize > MAX_UINTN) {\r
Status = EFI_UNSUPPORTED;\r
goto CloseFile;\r
}\r
- *Size = (UINTN)FileSize;\r
+\r
+ *Size = (UINTN)FileSize;\r
Status = EFI_SUCCESS;\r
CloseFile:\r
FileHandle->Close (FileHandle);\r
STATIC\r
EFI_STATUS\r
ReadWholeQemuKernelLoaderBlob (\r
- IN EFI_FILE_HANDLE Root,\r
- IN CHAR16 *FileName,\r
- IN UINTN Size,\r
- OUT VOID *Buffer\r
+ IN EFI_FILE_HANDLE Root,\r
+ IN CHAR16 *FileName,\r
+ IN UINTN Size,\r
+ OUT VOID *Buffer\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_FILE_HANDLE FileHandle;\r
- UINTN ReadSize;\r
+ EFI_STATUS Status;\r
+ EFI_FILE_HANDLE FileHandle;\r
+ UINTN ReadSize;\r
\r
Status = Root->Open (Root, &FileHandle, FileName, EFI_FILE_MODE_READ, 0);\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
+\r
ReadSize = Size;\r
- Status = FileHandle->Read (FileHandle, &ReadSize, Buffer);\r
+ Status = FileHandle->Read (FileHandle, &ReadSize, Buffer);\r
if (EFI_ERROR (Status)) {\r
goto CloseFile;\r
}\r
+\r
if (ReadSize != Size) {\r
Status = EFI_PROTOCOL_ERROR;\r
goto CloseFile;\r
}\r
+\r
Status = EFI_SUCCESS;\r
CloseFile:\r
FileHandle->Close (FileHandle);\r
EFI_STATUS\r
EFIAPI\r
QemuLoadKernelImage (\r
- OUT EFI_HANDLE *ImageHandle\r
+ OUT EFI_HANDLE *ImageHandle\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_HANDLE KernelImageHandle;\r
- EFI_LOADED_IMAGE_PROTOCOL *KernelLoadedImage;\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePathNode;\r
- EFI_HANDLE FsVolumeHandle;\r
- EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FsProtocol;\r
- EFI_FILE_HANDLE Root;\r
- UINTN CommandLineSize;\r
- CHAR8 *CommandLine;\r
- UINTN InitrdSize;\r
+ EFI_STATUS Status;\r
+ EFI_HANDLE KernelImageHandle;\r
+ EFI_LOADED_IMAGE_PROTOCOL *KernelLoadedImage;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePathNode;\r
+ EFI_HANDLE FsVolumeHandle;\r
+ EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *FsProtocol;\r
+ EFI_FILE_HANDLE Root;\r
+ UINTN CommandLineSize;\r
+ CHAR8 *CommandLine;\r
+ UINTN InitrdSize;\r
\r
//\r
// Load the image. This should call back into the QEMU EFI loader file system.\r
&KernelImageHandle\r
);\r
switch (Status) {\r
- case EFI_SUCCESS:\r
- break;\r
-\r
- case EFI_SECURITY_VIOLATION:\r
- //\r
- // In this case, the image was loaded but failed to authenticate.\r
- //\r
- Status = EFI_ACCESS_DENIED;\r
- goto UnloadImage;\r
-\r
- default:\r
- DEBUG ((Status == EFI_NOT_FOUND ? DEBUG_INFO : DEBUG_ERROR,\r
- "%a: LoadImage(): %r\n", __FUNCTION__, Status));\r
- return Status;\r
+ case EFI_SUCCESS:\r
+ break;\r
+\r
+ case EFI_SECURITY_VIOLATION:\r
+ //\r
+ // In this case, the image was loaded but failed to authenticate.\r
+ //\r
+ Status = EFI_ACCESS_DENIED;\r
+ goto UnloadImage;\r
+\r
+ default:\r
+ DEBUG ((\r
+ Status == EFI_NOT_FOUND ? DEBUG_INFO : DEBUG_ERROR,\r
+ "%a: LoadImage(): %r\n",\r
+ __FUNCTION__,\r
+ Status\r
+ ));\r
+ return Status;\r
}\r
\r
//\r
// used to query the "initrd" and to read the "cmdline" synthetic files.\r
//\r
DevicePathNode = (EFI_DEVICE_PATH_PROTOCOL *)&mQemuKernelLoaderFsDevicePath;\r
- Status = gBS->LocateDevicePath (\r
- &gEfiSimpleFileSystemProtocolGuid,\r
- &DevicePathNode,\r
- &FsVolumeHandle\r
- );\r
+ Status = gBS->LocateDevicePath (\r
+ &gEfiSimpleFileSystemProtocolGuid,\r
+ &DevicePathNode,\r
+ &FsVolumeHandle\r
+ );\r
if (EFI_ERROR (Status)) {\r
goto UnloadImage;\r
}\r
goto CloseRoot;\r
}\r
\r
- Status = ReadWholeQemuKernelLoaderBlob (Root, L"cmdline", CommandLineSize,\r
- CommandLine);\r
+ Status = ReadWholeQemuKernelLoaderBlob (\r
+ Root,\r
+ L"cmdline",\r
+ CommandLineSize,\r
+ CommandLine\r
+ );\r
if (EFI_ERROR (Status)) {\r
goto FreeCommandLine;\r
}\r
// Verify NUL-termination of the command line.\r
//\r
if (CommandLine[CommandLineSize - 1] != '\0') {\r
- DEBUG ((DEBUG_ERROR, "%a: kernel command line is not NUL-terminated\n",\r
- __FUNCTION__));\r
+ DEBUG ((\r
+ DEBUG_ERROR,\r
+ "%a: kernel command line is not NUL-terminated\n",\r
+ __FUNCTION__\r
+ ));\r
Status = EFI_PROTOCOL_ERROR;\r
goto FreeCommandLine;\r
}\r
KernelLoadedImage->LoadOptionsSize += 2;\r
\r
KernelLoadedImage->LoadOptions = AllocatePool (\r
- KernelLoadedImage->LoadOptionsSize);\r
+ KernelLoadedImage->LoadOptionsSize\r
+ );\r
if (KernelLoadedImage->LoadOptions == NULL) {\r
KernelLoadedImage->LoadOptionsSize = 0;\r
- Status = EFI_OUT_OF_RESOURCES;\r
+ Status = EFI_OUT_OF_RESOURCES;\r
goto FreeCommandLine;\r
}\r
\r
(CommandLineSize == 0) ? "" : CommandLine,\r
(InitrdSize == 0) ? "" : " initrd=initrd"\r
);\r
- DEBUG ((DEBUG_INFO, "%a: command line: \"%s\"\n", __FUNCTION__,\r
- (CHAR16 *)KernelLoadedImage->LoadOptions));\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "%a: command line: \"%s\"\n",\r
+ __FUNCTION__,\r
+ (CHAR16 *)KernelLoadedImage->LoadOptions\r
+ ));\r
}\r
\r
*ImageHandle = KernelImageHandle;\r
- Status = EFI_SUCCESS;\r
+ Status = EFI_SUCCESS;\r
\r
FreeCommandLine:\r
if (CommandLineSize > 0) {\r
FreePool (CommandLine);\r
}\r
+\r
CloseRoot:\r
Root->Close (Root);\r
UnloadImage:\r
EFI_STATUS\r
EFIAPI\r
QemuStartKernelImage (\r
- IN OUT EFI_HANDLE *ImageHandle\r
+ IN OUT EFI_HANDLE *ImageHandle\r
)\r
{\r
return gBS->StartImage (\r
EFI_STATUS\r
EFIAPI\r
QemuUnloadKernelImage (\r
- IN EFI_HANDLE ImageHandle\r
+ IN EFI_HANDLE ImageHandle\r
)\r
{\r
- EFI_LOADED_IMAGE_PROTOCOL *KernelLoadedImage;\r
- EFI_STATUS Status;\r
+ EFI_LOADED_IMAGE_PROTOCOL *KernelLoadedImage;\r
+ EFI_STATUS Status;\r
\r
Status = gBS->OpenProtocol (\r
ImageHandle,\r
FreePool (KernelLoadedImage->LoadOptions);\r
KernelLoadedImage->LoadOptions = NULL;\r
}\r
+\r
KernelLoadedImage->LoadOptionsSize = 0;\r
\r
return gBS->UnloadImage (ImageHandle);\r