OpenCore  1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
BuiltinPicker.c File Reference
#include "BootManagementInternal.h"
#include <Guid/AppleFile.h>
#include <Guid/AppleVariable.h>
#include <Guid/OcVariable.h>
#include <IndustryStandard/AppleCsrConfig.h>
#include <Protocol/AppleBootPolicy.h>
#include <Protocol/AppleKeyMapAggregator.h>
#include <Protocol/AppleBeepGen.h>
#include <Protocol/LoadedImage.h>
#include <Protocol/OcAudio.h>
#include <Protocol/SimpleTextOut.h>
#include <Library/BaseLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/BaseOverflowLib.h>
#include <Library/OcConsoleLib.h>
#include <Library/OcCryptoLib.h>
#include <Library/OcDebugLogLib.h>
#include <Library/DevicePathLib.h>
#include <Library/OcTimerLib.h>
#include <Library/OcTypingLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/OcAppleKeyMapLib.h>
#include <Library/OcBootManagementLib.h>
#include <Library/OcDevicePathLib.h>
#include <Library/OcFileLib.h>
#include <Library/OcMiscLib.h>
#include <Library/OcRtcLib.h>
#include <Library/OcStringLib.h>
#include <Library/PrintLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/UefiRuntimeServicesTableLib.h>
#include <Library/UefiLib.h>
#include <Library/ResetSystemLib.h>

Go to the source code of this file.

Macros

#define MENU_PREFIX_LENGTH   (5)
 
#define OC_KB_DBG_MAX_COLUMN   80
 
#define OC_KB_DBG_DELTA_SAMPLE_COLUMN   0
 
#define OC_KB_DBG_PRINT_ROW   2
 
#define OC_KB_DBG_DOWN_ROW   (OC_KB_DBG_PRINT_ROW + 4)
 
#define OC_KB_DBG_X_ROW   (OC_KB_DBG_PRINT_ROW + 5)
 
#define OC_KB_DBG_MODIFIERS_ROW   (OC_KB_DBG_PRINT_ROW + 6)
 

Typedefs

typedef _TAB_FOCUS TAB_FOCUS
 

Enumerations

enum  _TAB_FOCUS { TAB_PICKER , TAB_RESTART , TAB_SHUTDOWN , TAB_MAX }
 

Functions

STATIC VOID InitKbDebugDisplay (VOID)
 
STATIC VOID EFIAPI InstrumentLoopDelay (UINT64 LoopDelayStart, UINT64 LoopDelayEnd)
 
STATIC VOID EFIAPI ShowKbDebugDisplay (UINTN NumKeysDown, UINTN NumKeysHeld, APPLE_MODIFIER_MAP Modifiers)
 
STATIC VOID DisplaySystemMs (VOID)
 
STATIC CHAR16 GetPickerEntryCursor (IN OC_BOOT_CONTEXT *BootContext, IN UINT32 TimeOutSeconds, IN INTN ChosenEntry, IN UINTN Index, IN OC_MODIFIER_MAP OcModifiers)
 
VOID UpdateTabContext (IN BOOLEAN IsEntering, IN OC_BOOT_CONTEXT *BootContext, IN OC_BOOT_ENTRY **BootEntries, IN TAB_FOCUS TabFocus, IN INTN ChosenEntry, IN CHAR16 OldEntryCursor, IN INT32 FirstIndexRow, IN INT32 ShutdownRestartRow, IN INT32 ShutdownColumn, IN INT32 RestartColumn)
 
EFI_STATUS EFIAPI OcShowSimpleBootMenu (IN OC_BOOT_CONTEXT *BootContext, IN OC_BOOT_ENTRY **BootEntries, OUT OC_BOOT_ENTRY **ChosenBootEntry)
 
EFI_STATUS EFIAPI OcShowSimplePasswordRequest (IN OC_PICKER_CONTEXT *Context, IN OC_PRIVILEGE_LEVEL Level)
 

Variables

STATIC INT32 mStatusRow
 
STATIC INT32 mStatusColumn
 
STATIC INT32 mRunningColumn
 
STATIC UINT64 mPreviousTick
 
STATIC UINT64 mLoopDelayStart
 
STATIC UINT64 mLoopDelayEnd
 
STATIC TAB_FOCUS mFocusList []
 
STATIC TAB_FOCUS mFocusListReversed []
 
STATIC TAB_FOCUS mFocusListMinimal []
 
STATIC OC_KB_DEBUG_CALLBACKS mSimplePickerKbDebug
 

Detailed Description

Builtin picker and password handler.

Copyright (C) 2019, vit9696. All rights reserved.
Copyright (C) 2021, Mike Beaton. All rights reserved.
SPDX-License-Identifier: BSD-3-Clause

Definition in file BuiltinPicker.c.

Macro Definition Documentation

◆ MENU_PREFIX_LENGTH

#define MENU_PREFIX_LENGTH   (5)

Definition at line 94 of file BuiltinPicker.c.

◆ OC_KB_DBG_DELTA_SAMPLE_COLUMN

#define OC_KB_DBG_DELTA_SAMPLE_COLUMN   0

Definition at line 97 of file BuiltinPicker.c.

◆ OC_KB_DBG_DOWN_ROW

#define OC_KB_DBG_DOWN_ROW   (OC_KB_DBG_PRINT_ROW + 4)

Definition at line 105 of file BuiltinPicker.c.

◆ OC_KB_DBG_MAX_COLUMN

#define OC_KB_DBG_MAX_COLUMN   80

Definition at line 96 of file BuiltinPicker.c.

◆ OC_KB_DBG_MODIFIERS_ROW

#define OC_KB_DBG_MODIFIERS_ROW   (OC_KB_DBG_PRINT_ROW + 6)

Definition at line 107 of file BuiltinPicker.c.

◆ OC_KB_DBG_PRINT_ROW

#define OC_KB_DBG_PRINT_ROW   2

Definition at line 102 of file BuiltinPicker.c.

◆ OC_KB_DBG_X_ROW

#define OC_KB_DBG_X_ROW   (OC_KB_DBG_PRINT_ROW + 5)

Definition at line 106 of file BuiltinPicker.c.

Typedef Documentation

◆ TAB_FOCUS

Definition at line 67 of file BuiltinPicker.c.

Enumeration Type Documentation

◆ _TAB_FOCUS

enum _TAB_FOCUS
Enumerator
TAB_PICKER 
TAB_RESTART 
TAB_SHUTDOWN 
TAB_MAX 

Definition at line 57 of file BuiltinPicker.c.

Function Documentation

◆ DisplaySystemMs()

STATIC VOID DisplaySystemMs ( VOID )

Definition at line 222 of file BuiltinPicker.c.

◆ GetPickerEntryCursor()

STATIC CHAR16 GetPickerEntryCursor ( IN OC_BOOT_CONTEXT * BootContext,
IN UINT32 TimeOutSeconds,
IN INTN ChosenEntry,
IN UINTN Index,
IN OC_MODIFIER_MAP OcModifiers )

Definition at line 234 of file BuiltinPicker.c.

◆ InitKbDebugDisplay()

STATIC VOID InitKbDebugDisplay ( VOID )

Definition at line 111 of file BuiltinPicker.c.

◆ InstrumentLoopDelay()

STATIC VOID EFIAPI InstrumentLoopDelay ( UINT64 LoopDelayStart,
UINT64 LoopDelayEnd )

Definition at line 124 of file BuiltinPicker.c.

◆ OcShowSimpleBootMenu()

EFI_STATUS EFIAPI OcShowSimpleBootMenu ( IN OC_BOOT_CONTEXT * BootContext,
IN OC_BOOT_ENTRY ** BootEntries,
OUT OC_BOOT_ENTRY ** ChosenBootEntry )

Show simple boot entry selection menu and return chosen entry.

Parameters
[in]BootContextBoot context.
[in]BootEntriesEnumerated entries.
[in]ChosenBootEntryChosen boot entry from BootEntries on success.
Return values
EFI_SUCCESSExecuted successfully and picked up an entry.
EFI_ABORTEDWhen the user chose to by pressing Esc or 0.

Definition at line 332 of file BuiltinPicker.c.

◆ OcShowSimplePasswordRequest()

EFI_STATUS EFIAPI OcShowSimplePasswordRequest ( IN OC_PICKER_CONTEXT * Context,
IN OC_PRIVILEGE_LEVEL Level )

Show simple password prompt and return verification status.

Parameters
[in]ContextPicker context.
[in]LevelThe privilege level to request escalating to.
Return values
EFI_SUCCESSThe privilege level has been escalated successfully.
EFI_ABORTEDThe privilege escalation has been aborted.
otherThe system must be considered compromised.

Definition at line 887 of file BuiltinPicker.c.

◆ ShowKbDebugDisplay()

STATIC VOID EFIAPI ShowKbDebugDisplay ( UINTN NumKeysDown,
UINTN NumKeysHeld,
APPLE_MODIFIER_MAP Modifiers )

Definition at line 136 of file BuiltinPicker.c.

◆ UpdateTabContext()

VOID UpdateTabContext ( IN BOOLEAN IsEntering,
IN OC_BOOT_CONTEXT * BootContext,
IN OC_BOOT_ENTRY ** BootEntries,
IN TAB_FOCUS TabFocus,
IN INTN ChosenEntry,
IN CHAR16 OldEntryCursor,
IN INT32 FirstIndexRow,
IN INT32 ShutdownRestartRow,
IN INT32 ShutdownColumn,
IN INT32 RestartColumn )

Definition at line 254 of file BuiltinPicker.c.

Variable Documentation

◆ mFocusList

STATIC TAB_FOCUS mFocusList[]
Initial value:
= {
}
@ TAB_RESTART
@ TAB_PICKER
@ TAB_SHUTDOWN

Definition at line 69 of file BuiltinPicker.c.

◆ mFocusListMinimal

STATIC TAB_FOCUS mFocusListMinimal[]
Initial value:
= {
}

Definition at line 87 of file BuiltinPicker.c.

◆ mFocusListReversed

STATIC TAB_FOCUS mFocusListReversed[]
Initial value:

Definition at line 78 of file BuiltinPicker.c.

◆ mLoopDelayEnd

STATIC UINT64 mLoopDelayEnd

Definition at line 55 of file BuiltinPicker.c.

◆ mLoopDelayStart

STATIC UINT64 mLoopDelayStart

Definition at line 54 of file BuiltinPicker.c.

◆ mPreviousTick

STATIC UINT64 mPreviousTick

Definition at line 52 of file BuiltinPicker.c.

◆ mRunningColumn

STATIC INT32 mRunningColumn

Definition at line 50 of file BuiltinPicker.c.

◆ mSimplePickerKbDebug

STATIC OC_KB_DEBUG_CALLBACKS mSimplePickerKbDebug
Initial value:
= {
}
STATIC VOID EFIAPI InstrumentLoopDelay(UINT64 LoopDelayStart, UINT64 LoopDelayEnd)
STATIC VOID EFIAPI ShowKbDebugDisplay(UINTN NumKeysDown, UINTN NumKeysHeld, APPLE_MODIFIER_MAP Modifiers)

Definition at line 215 of file BuiltinPicker.c.

◆ mStatusColumn

STATIC INT32 mStatusColumn

Definition at line 48 of file BuiltinPicker.c.

◆ mStatusRow

STATIC INT32 mStatusRow

Definition at line 47 of file BuiltinPicker.c.