OpenCore
1.0.4
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.