]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/QemuKernelLoaderFsDxe/QemuKernelLoaderFsDxe.c
OvmfPkg/QemuKernelLoaderFsDxe: drop tentative const object definition
[mirror_edk2.git] / OvmfPkg / QemuKernelLoaderFsDxe / QemuKernelLoaderFsDxe.c
index 869549f164f0d523b8d562fc190633b32e7f6a6e..b09ff6a3590db34d9aaa5fd3539c4cebb5db6c76 100644 (file)
@@ -123,13 +123,6 @@ typedef struct {
 #define STUB_FILE_FROM_FILE(FilePointer) \\r
         CR (FilePointer, STUB_FILE, File, STUB_FILE_SIG)\r
 \r
-//\r
-// Tentative definition of the file protocol template. The initializer\r
-// (external definition) will be provided later.\r
-//\r
-STATIC CONST EFI_FILE_PROTOCOL mEfiFileProtocolTemplate;\r
-\r
-\r
 //\r
 // Protocol member functions for File.\r
 //\r
@@ -137,6 +130,8 @@ STATIC CONST EFI_FILE_PROTOCOL mEfiFileProtocolTemplate;
 /**\r
   Opens a new file relative to the source file's location.\r
 \r
+  (Forward declaration.)\r
+\r
   @param[in]  This        A pointer to the EFI_FILE_PROTOCOL instance that is\r
                           the file handle to the source location. This would\r
                           typically be an open handle to a directory.\r
@@ -181,65 +176,7 @@ StubFileOpen (
   IN CHAR16             *FileName,\r
   IN UINT64             OpenMode,\r
   IN UINT64             Attributes\r
-  )\r
-{\r
-  CONST STUB_FILE *StubFile;\r
-  UINTN           BlobType;\r
-  STUB_FILE       *NewStubFile;\r
-\r
-  //\r
-  // We're read-only.\r
-  //\r
-  switch (OpenMode) {\r
-    case EFI_FILE_MODE_READ:\r
-      break;\r
-\r
-    case EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE:\r
-    case EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE | EFI_FILE_MODE_CREATE:\r
-      return EFI_WRITE_PROTECTED;\r
-\r
-    default:\r
-      return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  //\r
-  // Only the root directory supports opening files in it.\r
-  //\r
-  StubFile = STUB_FILE_FROM_FILE (This);\r
-  if (StubFile->BlobType != KernelBlobTypeMax) {\r
-    return EFI_UNSUPPORTED;\r
-  }\r
-\r
-  //\r
-  // Locate the file.\r
-  //\r
-  for (BlobType = 0; BlobType < KernelBlobTypeMax; ++BlobType) {\r
-    if (StrCmp (FileName, mKernelBlob[BlobType].Name) == 0) {\r
-      break;\r
-    }\r
-  }\r
-  if (BlobType == KernelBlobTypeMax) {\r
-    return EFI_NOT_FOUND;\r
-  }\r
-\r
-  //\r
-  // Found it.\r
-  //\r
-  NewStubFile = AllocatePool (sizeof *NewStubFile);\r
-  if (NewStubFile == NULL) {\r
-    return EFI_OUT_OF_RESOURCES;\r
-  }\r
-\r
-  NewStubFile->Signature = STUB_FILE_SIG;\r
-  NewStubFile->BlobType  = (KERNEL_BLOB_TYPE)BlobType;\r
-  NewStubFile->Position  = 0;\r
-  CopyMem (&NewStubFile->File, &mEfiFileProtocolTemplate,\r
-    sizeof mEfiFileProtocolTemplate);\r
-  *NewHandle = &NewStubFile->File;\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
+  );\r
 \r
 /**\r
   Closes a specified file handle.\r
@@ -797,6 +734,74 @@ STATIC CONST EFI_FILE_PROTOCOL mEfiFileProtocolTemplate = {
   NULL                        // FlushEx, revision 2\r
 };\r
 \r
+STATIC\r
+EFI_STATUS\r
+EFIAPI\r
+StubFileOpen (\r
+  IN EFI_FILE_PROTOCOL  *This,\r
+  OUT EFI_FILE_PROTOCOL **NewHandle,\r
+  IN CHAR16             *FileName,\r
+  IN UINT64             OpenMode,\r
+  IN UINT64             Attributes\r
+  )\r
+{\r
+  CONST STUB_FILE *StubFile;\r
+  UINTN           BlobType;\r
+  STUB_FILE       *NewStubFile;\r
+\r
+  //\r
+  // We're read-only.\r
+  //\r
+  switch (OpenMode) {\r
+    case EFI_FILE_MODE_READ:\r
+      break;\r
+\r
+    case EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE:\r
+    case EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE | EFI_FILE_MODE_CREATE:\r
+      return EFI_WRITE_PROTECTED;\r
+\r
+    default:\r
+      return EFI_INVALID_PARAMETER;\r
+  }\r
+\r
+  //\r
+  // Only the root directory supports opening files in it.\r
+  //\r
+  StubFile = STUB_FILE_FROM_FILE (This);\r
+  if (StubFile->BlobType != KernelBlobTypeMax) {\r
+    return EFI_UNSUPPORTED;\r
+  }\r
+\r
+  //\r
+  // Locate the file.\r
+  //\r
+  for (BlobType = 0; BlobType < KernelBlobTypeMax; ++BlobType) {\r
+    if (StrCmp (FileName, mKernelBlob[BlobType].Name) == 0) {\r
+      break;\r
+    }\r
+  }\r
+  if (BlobType == KernelBlobTypeMax) {\r
+    return EFI_NOT_FOUND;\r
+  }\r
+\r
+  //\r
+  // Found it.\r
+  //\r
+  NewStubFile = AllocatePool (sizeof *NewStubFile);\r
+  if (NewStubFile == NULL) {\r
+    return EFI_OUT_OF_RESOURCES;\r
+  }\r
+\r
+  NewStubFile->Signature = STUB_FILE_SIG;\r
+  NewStubFile->BlobType  = (KERNEL_BLOB_TYPE)BlobType;\r
+  NewStubFile->Position  = 0;\r
+  CopyMem (&NewStubFile->File, &mEfiFileProtocolTemplate,\r
+    sizeof mEfiFileProtocolTemplate);\r
+  *NewHandle = &NewStubFile->File;\r
+\r
+  return EFI_SUCCESS;\r
+}\r
+\r
 \r
 //\r
 // Protocol member functions for SimpleFileSystem.\r