|
OpenCore
1.0.5
OpenCore Bootloader
|
#include "LinuxBootInternal.h"#include <Uefi.h>#include <Library/BaseLib.h>#include <Library/DevicePathLib.h>#include <Library/MemoryAllocationLib.h>#include <Library/OcBootManagementLib.h>#include <Library/OcDebugLogLib.h>#include <Library/OcFileLib.h>#include <Library/OcFlexArrayLib.h>#include <Library/OcStringLib.h>#include <Library/PrintLib.h>#include <Library/SortLib.h>#include <Library/UefiBootServicesTableLib.h>#include <Protocol/OcBootEntry.h>Go to the source code of this file.
Macros | |
| #define | ROOT_DIR L"\\" |
| #define | BOOT_DIR L"\\boot" |
| #define | OSTREE_DIR L"\\ostree" |
| #define | LOADER_ENTRIES_DIR L"loader\\entries" |
| #define | GRUB2_GRUB_CFG L"grub2\\grub.cfg" |
| #define | GRUB2_GRUBENV L"grub2\\grubenv" |
| #define | GRUB2_GRUBENV_SIZE SIZE_1KB |
| #define | BLSPEC_SUFFIX_CONF L".conf" |
| #define | BLSPEC_PREFIX_AUTO L"auto-" |
| #define | MAX_LOADER_ENTRY_NAME_LEN (127) |
| #define | MAX_LOADER_ENTRY_FILE_INFO_SIZE |
| #define | MAX_LOADER_ENTRY_FILE_SIZE SIZE_4KB |
Typedefs | |
| typedef enum ENTRY_PARSE_STATE_ | ENTRY_PARSE_STATE |
Enumerations | |
| enum | ENTRY_PARSE_STATE_ { ENTRY_LEADING_SPACE , ENTRY_COMMENT , ENTRY_KEY , ENTRY_KEY_VALUE_SPACE , ENTRY_VALUE } |
Functions | |
| STATIC CHAR8 * | ExtractVariantFrom (IN CHAR8 *String) |
| STATIC EFI_STATUS | GetLoaderEntryLine (IN CONST CHAR16 *FileName, IN OUT CHAR8 *Content, IN OUT UINTN *Pos, OUT CHAR8 **Key, OUT CHAR8 **Value) |
| LOADER_ENTRY * | InternalAllocateLoaderEntry (VOID) |
| VOID | InternalFreeLoaderEntry (LOADER_ENTRY *Entry) |
| STATIC EFI_STATUS | EntryCopySingleValue (IN CONST BOOLEAN Grub2, IN OUT CHAR8 **Target, IN CONST CHAR8 *Value) |
| STATIC EFI_STATUS | EntryCopyMultipleValue (IN CONST BOOLEAN Grub2, IN OC_FLEX_ARRAY *Array, IN CONST CHAR8 *Value) |
| EFI_STATUS | InternalProcessLoaderEntryFile (IN CONST CHAR16 *FileName, IN OUT CHAR8 *Content, OUT LOADER_ENTRY *Entry, IN CONST BOOLEAN Grub2) |
| STATIC EFI_STATUS | ExpandReplaceOptions (IN OUT LOADER_ENTRY *Entry) |
| STATIC EFI_STATUS | ExpandInitrds (IN OUT LOADER_ENTRY *Entry) |
| STATIC EFI_STATUS | DoFilterLoaderEntry (EFI_FILE_HANDLE Directory, EFI_FILE_INFO *FileInfo, UINTN FileInfoSize, VOID *Context OPTIONAL) |
| EFI_STATUS | InternalIdVersionFromFileName (IN OUT LOADER_ENTRY *Entry, IN CHAR16 *FileName) |
| STATIC EFI_STATUS | FindLoaderFile (IN CONST EFI_FILE_HANDLE Directory, IN CONST CHAR16 *DirName, IN OUT CHAR8 **FileName) |
| STATIC BOOLEAN | HasRootOption (IN OC_FLEX_ARRAY *Options) |
| STATIC BOOLEAN | HasOstreeDir (EFI_FILE_HANDLE Directory) |
| STATIC EFI_STATUS | DoProcessLoaderEntry (EFI_FILE_HANDLE Directory, EFI_FILE_INFO *FileInfo, UINTN FileInfoSize, VOID *Context OPTIONAL) |
| STATIC EFI_STATUS | ProcessLoaderEntry (EFI_FILE_HANDLE Directory, EFI_FILE_INFO *FileInfo, UINTN FileInfoSize, VOID *Context OPTIONAL) |
| STATIC EFI_STATUS | FixTuneDVars (VOID) |
| STATIC EFI_STATUS | ScanLoaderEntriesAtDirectory (IN EFI_FILE_PROTOCOL *RootDirectory, IN CHAR16 *DirName, OUT OC_PICKER_ENTRY **Entries, OUT UINTN *NumEntries) |
| STATIC EFI_STATUS | DoScanLoaderEntries (IN EFI_FILE_PROTOCOL *Directory, IN CHAR16 *DirName, OUT OC_PICKER_ENTRY **Entries, OUT UINTN *NumEntries) |
| EFI_STATUS | InternalScanLoaderEntries (IN EFI_FILE_PROTOCOL *RootDirectory, OUT OC_PICKER_ENTRY **Entries, OUT UINTN *NumEntries) |
| STATIC EFI_STATUS | DoConvertLoaderEntriesToBootEntries (OUT OC_PICKER_ENTRY **Entries, OUT UINTN *NumEntries) |
| STATIC EFI_STATUS | AppendVersion (LOADER_ENTRY *Entry) |
| STATIC EFI_STATUS | AppendVersions (VOID) |
| STATIC EFI_STATUS | DisambiguateDuplicates (VOID) |
| STATIC EFI_STATUS | EntryApplyDefaults (IN EFI_FILE_PROTOCOL *RootDirectory, IN LOADER_ENTRY *Entry) |
| STATIC EFI_STATUS | ApplyDefaults (IN EFI_FILE_PROTOCOL *RootDirectory) |
| EFI_STATUS | InternalConvertLoaderEntriesToBootEntries (IN EFI_FILE_PROTOCOL *RootDirectory, OUT OC_PICKER_ENTRY **Entries, OUT UINTN *NumEntries) |
Variables | |
| STATIC CHAR8 * | mTuneDVars [] |
| STATIC BOOLEAN | mIsGrub2 |
| STATIC CHAR8 * | mLinuxVariants [] |
Boot Loader Spec / Grub2 blscfg module loader entry parser.
Copyright (c) 2021, Mike Beaton. All rights reserved.
SPDX-License-Identifier: BSD-3-Clause
Definition in file LoaderEntry.c.
| #define BLSPEC_PREFIX_AUTO L"auto-" |
Definition at line 59 of file LoaderEntry.c.
| #define BLSPEC_SUFFIX_CONF L".conf" |
Definition at line 58 of file LoaderEntry.c.
| #define BOOT_DIR L"\\boot" |
Definition at line 43 of file LoaderEntry.c.
| #define GRUB2_GRUB_CFG L"grub2\\grub.cfg" |
Definition at line 54 of file LoaderEntry.c.
| #define GRUB2_GRUBENV L"grub2\\grubenv" |
Definition at line 55 of file LoaderEntry.c.
| #define GRUB2_GRUBENV_SIZE SIZE_1KB |
Definition at line 56 of file LoaderEntry.c.
| #define LOADER_ENTRIES_DIR L"loader\\entries" |
Definition at line 53 of file LoaderEntry.c.
| #define MAX_LOADER_ENTRY_FILE_INFO_SIZE |
Definition at line 69 of file LoaderEntry.c.
| #define MAX_LOADER_ENTRY_FILE_SIZE SIZE_4KB |
Definition at line 78 of file LoaderEntry.c.
| #define MAX_LOADER_ENTRY_NAME_LEN (127) |
Definition at line 68 of file LoaderEntry.c.
| #define OSTREE_DIR L"\\ostree" |
Definition at line 47 of file LoaderEntry.c.
| #define ROOT_DIR L"\\" |
Definition at line 37 of file LoaderEntry.c.
| typedef enum ENTRY_PARSE_STATE_ ENTRY_PARSE_STATE |
| enum ENTRY_PARSE_STATE_ |
| Enumerator | |
|---|---|
| ENTRY_LEADING_SPACE | |
| ENTRY_COMMENT | |
| ENTRY_KEY | |
| ENTRY_KEY_VALUE_SPACE | |
| ENTRY_VALUE | |
Definition at line 91 of file LoaderEntry.c.
| STATIC EFI_STATUS AppendVersion | ( | LOADER_ENTRY * | Entry | ) |
Definition at line 1337 of file LoaderEntry.c.
| STATIC EFI_STATUS AppendVersions | ( | VOID | ) |
Definition at line 1364 of file LoaderEntry.c.
| STATIC EFI_STATUS ApplyDefaults | ( | IN EFI_FILE_PROTOCOL * | RootDirectory | ) |
Definition at line 1481 of file LoaderEntry.c.
| STATIC EFI_STATUS DisambiguateDuplicates | ( | VOID | ) |
Definition at line 1390 of file LoaderEntry.c.
| STATIC EFI_STATUS DoConvertLoaderEntriesToBootEntries | ( | OUT OC_PICKER_ENTRY ** | Entries, |
| OUT UINTN * | NumEntries ) |
Definition at line 1167 of file LoaderEntry.c.
| STATIC EFI_STATUS DoFilterLoaderEntry | ( | EFI_FILE_HANDLE | Directory, |
| EFI_FILE_INFO * | FileInfo, | ||
| UINTN | FileInfoSize, | ||
| VOID *Context | OPTIONAL ) |
Definition at line 554 of file LoaderEntry.c.
| STATIC EFI_STATUS DoProcessLoaderEntry | ( | EFI_FILE_HANDLE | Directory, |
| EFI_FILE_INFO * | FileInfo, | ||
| UINTN | FileInfoSize, | ||
| VOID *Context | OPTIONAL ) |
Definition at line 816 of file LoaderEntry.c.
| STATIC EFI_STATUS DoScanLoaderEntries | ( | IN EFI_FILE_PROTOCOL * | Directory, |
| IN CHAR16 * | DirName, | ||
| OUT OC_PICKER_ENTRY ** | Entries, | ||
| OUT UINTN * | NumEntries ) |
Definition at line 1122 of file LoaderEntry.c.
| STATIC EFI_STATUS EntryApplyDefaults | ( | IN EFI_FILE_PROTOCOL * | RootDirectory, |
| IN LOADER_ENTRY * | Entry ) |
Definition at line 1434 of file LoaderEntry.c.
| STATIC EFI_STATUS EntryCopyMultipleValue | ( | IN CONST BOOLEAN | Grub2, |
| IN OC_FLEX_ARRAY * | Array, | ||
| IN CONST CHAR8 * | Value ) |
Definition at line 358 of file LoaderEntry.c.
| STATIC EFI_STATUS EntryCopySingleValue | ( | IN CONST BOOLEAN | Grub2, |
| IN OUT CHAR8 ** | Target, | ||
| IN CONST CHAR8 * | Value ) |
Definition at line 336 of file LoaderEntry.c.
| STATIC EFI_STATUS ExpandInitrds | ( | IN OUT LOADER_ENTRY * | Entry | ) |
Definition at line 496 of file LoaderEntry.c.
| STATIC EFI_STATUS ExpandReplaceOptions | ( | IN OUT LOADER_ENTRY * | Entry | ) |
Definition at line 441 of file LoaderEntry.c.
| STATIC CHAR8 * ExtractVariantFrom | ( | IN CHAR8 * | String | ) |
Definition at line 139 of file LoaderEntry.c.
| STATIC EFI_STATUS FindLoaderFile | ( | IN CONST EFI_FILE_HANDLE | Directory, |
| IN CONST CHAR16 * | DirName, | ||
| IN OUT CHAR8 ** | FileName ) |
Definition at line 678 of file LoaderEntry.c.
| STATIC EFI_STATUS FixTuneDVars | ( | VOID | ) |
Definition at line 972 of file LoaderEntry.c.
| STATIC EFI_STATUS GetLoaderEntryLine | ( | IN CONST CHAR16 * | FileName, |
| IN OUT CHAR8 * | Content, | ||
| IN OUT UINTN * | Pos, | ||
| OUT CHAR8 ** | Key, | ||
| OUT CHAR8 ** | Value ) |
Definition at line 163 of file LoaderEntry.c.
| STATIC BOOLEAN HasOstreeDir | ( | EFI_FILE_HANDLE | Directory | ) |
Definition at line 792 of file LoaderEntry.c.
| STATIC BOOLEAN HasRootOption | ( | IN OC_FLEX_ARRAY * | Options | ) |
Definition at line 744 of file LoaderEntry.c.
| LOADER_ENTRY * InternalAllocateLoaderEntry | ( | VOID | ) |
Definition at line 273 of file LoaderEntry.c.
| EFI_STATUS InternalConvertLoaderEntriesToBootEntries | ( | IN EFI_FILE_PROTOCOL * | RootDirectory, |
| OUT OC_PICKER_ENTRY ** | Entries, | ||
| OUT UINTN * | NumEntries ) |
Definition at line 1507 of file LoaderEntry.c.
| VOID InternalFreeLoaderEntry | ( | LOADER_ENTRY * | Entry | ) |
Definition at line 301 of file LoaderEntry.c.
| EFI_STATUS InternalIdVersionFromFileName | ( | IN OUT LOADER_ENTRY * | Entry, |
| IN CHAR16 * | FileName ) |
Definition at line 593 of file LoaderEntry.c.
| EFI_STATUS InternalProcessLoaderEntryFile | ( | IN CONST CHAR16 * | FileName, |
| IN OUT CHAR8 * | Content, | ||
| OUT LOADER_ENTRY * | Entry, | ||
| IN CONST BOOLEAN | Grub2 ) |
Definition at line 384 of file LoaderEntry.c.
| EFI_STATUS InternalScanLoaderEntries | ( | IN EFI_FILE_PROTOCOL * | RootDirectory, |
| OUT OC_PICKER_ENTRY ** | Entries, | ||
| OUT UINTN * | NumEntries ) |
Definition at line 1144 of file LoaderEntry.c.
| STATIC EFI_STATUS ProcessLoaderEntry | ( | EFI_FILE_HANDLE | Directory, |
| EFI_FILE_INFO * | FileInfo, | ||
| UINTN | FileInfoSize, | ||
| VOID *Context | OPTIONAL ) |
Definition at line 942 of file LoaderEntry.c.
| STATIC EFI_STATUS ScanLoaderEntriesAtDirectory | ( | IN EFI_FILE_PROTOCOL * | RootDirectory, |
| IN CHAR16 * | DirName, | ||
| OUT OC_PICKER_ENTRY ** | Entries, | ||
| OUT UINTN * | NumEntries ) |
Definition at line 996 of file LoaderEntry.c.
| STATIC BOOLEAN mIsGrub2 |
Definition at line 86 of file LoaderEntry.c.
| STATIC CHAR8* mLinuxVariants[] |
Definition at line 107 of file LoaderEntry.c.
| STATIC CHAR8* mTuneDVars[] |
Definition at line 29 of file LoaderEntry.c.