/** @file\r
Hotkey library functions.\r
\r
-Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>\r
(C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
**/\r
UINTN\r
BmSizeOfKeyOption (\r
- EFI_BOOT_MANAGER_KEY_OPTION *KeyOption\r
+ IN CONST EFI_BOOT_MANAGER_KEY_OPTION *KeyOption\r
)\r
{\r
return OFFSET_OF (EFI_BOOT_MANAGER_KEY_OPTION, Keys)\r
**/\r
BOOLEAN\r
BmIsKeyOptionValid (\r
- IN EFI_BOOT_MANAGER_KEY_OPTION *KeyOption,\r
- IN UINTN KeyOptionSize\r
+ IN CONST EFI_BOOT_MANAGER_KEY_OPTION *KeyOption,\r
+ IN UINTN KeyOptionSize\r
)\r
{\r
UINT16 OptionName[BM_OPTION_NAME_LEN];\r
{\r
UINTN Index;\r
UINTN Uint;\r
- \r
+\r
if (!CompareGuid (Guid, &gEfiGlobalVariableGuid) ||\r
(StrSize (Name) != sizeof (L"Key####")) ||\r
(StrnCmp (Name, L"Key", 3) != 0)\r
{\r
UINTN Index;\r
BM_COLLECT_KEY_OPTIONS_PARAM *Param;\r
- EFI_BOOT_MANAGER_KEY_OPTION *KeyOption;\r
+ VOID *KeyOption;\r
UINT16 OptionNumber;\r
UINTN KeyOptionSize;\r
\r
Param = (BM_COLLECT_KEY_OPTIONS_PARAM *) Context;\r
\r
if (BmIsKeyOptionVariable (Name, Guid, &OptionNumber)) {\r
- GetEfiGlobalVariable2 (Name, (VOID**) &KeyOption, &KeyOptionSize);\r
+ GetEfiGlobalVariable2 (Name, &KeyOption, &KeyOptionSize);\r
ASSERT (KeyOption != NULL);\r
- KeyOption->OptionNumber = OptionNumber;\r
if (BmIsKeyOptionValid (KeyOption, KeyOptionSize)) {\r
Param->KeyOptions = ReallocatePool (\r
Param->KeyOptionCount * sizeof (EFI_BOOT_MANAGER_KEY_OPTION),\r
// Insert the key option in order\r
//\r
for (Index = 0; Index < Param->KeyOptionCount; Index++) {\r
- if (KeyOption->OptionNumber < Param->KeyOptions[Index].OptionNumber) {\r
+ if (OptionNumber < Param->KeyOptions[Index].OptionNumber) {\r
break;\r
}\r
}\r
CopyMem (&Param->KeyOptions[Index + 1], &Param->KeyOptions[Index], (Param->KeyOptionCount - Index) * sizeof (EFI_BOOT_MANAGER_KEY_OPTION));\r
- CopyMem (&Param->KeyOptions[Index], KeyOption, BmSizeOfKeyOption (KeyOption));\r
+ CopyMem (&Param->KeyOptions[Index], KeyOption, KeyOptionSize);\r
+ Param->KeyOptions[Index].OptionNumber = OptionNumber;\r
Param->KeyOptionCount++;\r
}\r
FreePool (KeyOption);\r
return Param.KeyOptions;\r
}\r
\r
-/**\r
- Callback function for event.\r
- \r
- @param Event Event for this callback function.\r
- @param Context Context pass to this function.\r
-**/\r
-VOID\r
-EFIAPI\r
-BmEmptyFunction (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
- )\r
-{\r
-}\r
-\r
/**\r
Check whether the bit is set in the value.\r
\r
HotkeyData = &Hotkey->KeyData[Hotkey->WaitingKey];\r
if ((KeyData->Key.ScanCode == HotkeyData->Key.ScanCode) &&\r
(KeyData->Key.UnicodeChar == HotkeyData->Key.UnicodeChar) &&\r
- (((KeyData->KeyState.KeyShiftState & EFI_SHIFT_STATE_VALID) != 0) ? \r
+ (((KeyData->KeyState.KeyShiftState & EFI_SHIFT_STATE_VALID) != 0) ?\r
(KeyData->KeyState.KeyShiftState == HotkeyData->KeyState.KeyShiftState) : TRUE\r
)\r
) {\r
\r
KeyShiftStateCount = 0;\r
BmGenerateKeyShiftState (0, KeyOption, EFI_SHIFT_STATE_VALID, KeyShiftStates, &KeyShiftStateCount);\r
- ASSERT (KeyShiftStateCount <= sizeof (KeyShiftStates) / sizeof (KeyShiftStates[0]));\r
+ ASSERT (KeyShiftStateCount <= ARRAY_SIZE (KeyShiftStates));\r
\r
EfiAcquireLock (&mBmHotkeyLock);\r
\r
EFI_STATUS Status;\r
EFI_BOOT_MANAGER_KEY_OPTION KeyOption;\r
VA_LIST Args;\r
- \r
+\r
if (mBmContinueKeyOption != NULL) {\r
return EFI_ALREADY_STARTED;\r
}\r
\r
/**\r
Stop the hotkey processing.\r
- \r
+\r
@param Event Event pointer related to hotkey service.\r
@param Context Context pass to this function.\r
**/\r
/**\r
Start the hot key service so that the key press can trigger the boot option.\r
\r
- @param HotkeyTriggered Return the waitable event and it will be signaled \r
+ @param HotkeyTriggered Return the waitable event and it will be signaled\r
when a valid hot key is pressed.\r
\r
@retval EFI_SUCCESS The hot key service is started.\r
EFI_EVENT Event;\r
UINT32 *BootOptionSupport;\r
\r
- Status = GetEfiGlobalVariable2 (EFI_BOOT_OPTION_SUPPORT_VARIABLE_NAME, (VOID **) &BootOptionSupport, NULL);\r
- ASSERT (BootOptionSupport != NULL);\r
-\r
- if ((*BootOptionSupport & EFI_BOOT_OPTION_SUPPORT_KEY) != 0) {\r
- mBmHotkeySupportCount = ((*BootOptionSupport & EFI_BOOT_OPTION_SUPPORT_COUNT) >> LowBitSet32 (EFI_BOOT_OPTION_SUPPORT_COUNT));\r
+ GetEfiGlobalVariable2 (EFI_BOOT_OPTION_SUPPORT_VARIABLE_NAME, (VOID **) &BootOptionSupport, NULL);\r
+ if (BootOptionSupport != NULL) {\r
+ if ((*BootOptionSupport & EFI_BOOT_OPTION_SUPPORT_KEY) != 0) {\r
+ mBmHotkeySupportCount = ((*BootOptionSupport & EFI_BOOT_OPTION_SUPPORT_COUNT) >> LowBitSet32 (EFI_BOOT_OPTION_SUPPORT_COUNT));\r
+ }\r
+ FreePool (BootOptionSupport);\r
}\r
- FreePool (BootOptionSupport);\r
\r
if (mBmHotkeySupportCount == 0) {\r
DEBUG ((EFI_D_INFO, "Bds: BootOptionSupport NV variable forbids starting the hotkey service.\n"));\r
Status = gBS->CreateEvent (\r
EVT_NOTIFY_WAIT,\r
TPL_CALLBACK,\r
- BmEmptyFunction,\r
+ EfiEventEmptyFunction,\r
NULL,\r
&mBmHotkeyTriggered\r
);\r