diff options
Diffstat (limited to 'EDK/Foundation/Library/Dxe/Include/EfiSmmDriverLib.h')
-rw-r--r-- | EDK/Foundation/Library/Dxe/Include/EfiSmmDriverLib.h | 226 |
1 files changed, 226 insertions, 0 deletions
diff --git a/EDK/Foundation/Library/Dxe/Include/EfiSmmDriverLib.h b/EDK/Foundation/Library/Dxe/Include/EfiSmmDriverLib.h new file mode 100644 index 0000000..5b6e74a --- /dev/null +++ b/EDK/Foundation/Library/Dxe/Include/EfiSmmDriverLib.h @@ -0,0 +1,226 @@ +/*++ + +Copyright (c) 2004 - 2007, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +Module Name: + + EfiSmmDriverLib.h + +Abstract: + + Light weight lib to support EFI Smm drivers. + +--*/ + +#ifndef _EFI_SMM_DRIVER_LIB_H_ +#define _EFI_SMM_DRIVER_LIB_H_ + +#include "Tiano.h" +#include "GetImage.h" +#include "EfiCommonLib.h" +#include EFI_GUID_DEFINITION (EventLegacyBios) +#include EFI_GUID_DEFINITION (EventGroup) +#include EFI_PROTOCOL_DEFINITION (FirmwareVolume) +#include EFI_PROTOCOL_DEFINITION (FirmwareVolume2) //;;## ...AMI_OVERRIDE... Support PI1.x +#include EFI_PROTOCOL_DEFINITION (SmmBase) +#include EFI_PROTOCOL_DEFINITION (SmmStatusCode) +// +// Driver Lib Globals. +// +extern EFI_BOOT_SERVICES *gBS; +extern EFI_SYSTEM_TABLE *gST; +extern EFI_RUNTIME_SERVICES *gRT; +extern EFI_SMM_BASE_PROTOCOL *gSMM; +extern EFI_SMM_STATUS_CODE_PROTOCOL *mSmmDebug; +extern UINTN gErrorLevel; + +#define EfiCopyMem EfiCommonLibCopyMem +#define EfiSetMem EfiCommonLibSetMem +#define EfiZeroMem EfiCommonLibZeroMem + +EFI_STATUS +EfiInitializeSmmDriverLib ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable, + IN OUT BOOLEAN *InSmm + ) +/*++ + +Routine Description: + + Intialize Smm Driver Lib if it has not yet been initialized. + +Arguments: + + ImageHandle - The firmware allocated handle for the EFI image. + + SystemTable - A pointer to the EFI System Table. + + InSmm - If InSmm is NULL, it will not register Image to SMM. + If InSmm is not NULL, it will register Image to SMM and + return information on currently in SMM mode or not. + +Returns: + + EFI_STATUS always returns EFI_SUCCESS + +--*/ +; + +VOID +EfiDebugAssert ( + IN CHAR8 *FileName, + IN INTN LineNumber, + IN CHAR8 *Description + ) +/*++ + +Routine Description: + + Worker function for ASSERT (). If Error Logging hub is loaded log ASSERT + information. If Error Logging hub is not loaded DEADLOOP (). + +Arguments: + + FileName - File name of failing routine. + + LineNumber - Line number of failing ASSERT(). + + Description - Description, usually the assertion, + +Returns: + + None + +--*/ +; + +VOID +EfiDebugVPrint ( + IN UINTN ErrorLevel, + IN CHAR8 *Format, + IN VA_LIST Marker + ) +/*++ + +Routine Description: + + Worker function for DEBUG(). If Error Logging hub is loaded log ASSERT + information. If Error Logging hub is not loaded do nothing. + +Arguments: + + ErrorLevel - If error level is set do the debug print. + + Format - String to use for the print, followed by Print arguments. + + Marker - VarArgs + +Returns: + + None + +--*/ +; + +VOID +EfiDebugPrint ( + IN UINTN ErrorLevel, + IN CHAR8 *Format, + ... + ) +/*++ + +Routine Description: + + Worker function for DEBUG(). If Error Logging hub is loaded log ASSERT + information. If Error Logging hub is not loaded do nothing. + +Arguments: + + ErrorLevel - If error level is set do the debug print. + + Format - String to use for the print, followed by Print arguments. + + ... - VAR args for Format + +Returns: + + None + +--*/ +; + +EFI_STATUS +EFIAPI +SmmEfiCreateEventLegacyBoot ( + IN EFI_TPL NotifyTpl, + IN EFI_EVENT_NOTIFY NotifyFunction, + IN VOID *NotifyContext, + OUT EFI_EVENT *LegacyBootEvent + ) +/*++ + +Routine Description: + Create a Legacy Boot Event. + Tiano extended the CreateEvent Type enum to add a legacy boot event type. + This was bad as Tiano did not own the enum. In UEFI 2.0 CreateEventEx was + added and now it's possible to not voilate the UEFI specification by + declaring a GUID for the legacy boot event class. This library supports + the R8.5/EFI 1.10 form and R8.6/UEFI 2.0 form and allows common code to + work both ways. + +Arguments: + LegacyBootEvent Returns the EFI event returned from gBS->CreateEvent(Ex) + +Returns: + EFI_SUCCESS Event was created. + Other Event was not created. + +--*/ +; + +EFI_STATUS +EFIAPI +SmmEfiCreateEventReadyToBoot ( + IN EFI_TPL NotifyTpl, + IN EFI_EVENT_NOTIFY NotifyFunction, + IN VOID *NotifyContext, + OUT EFI_EVENT *ReadyToBootEvent + ) +/*++ + +Routine Description: + Create a Read to Boot Event. + + Tiano extended the CreateEvent Type enum to add a ready to boot event type. + This was bad as Tiano did not own the enum. In UEFI 2.0 CreateEventEx was + added and now it's possible to not voilate the UEFI specification and use + the ready to boot event class defined in UEFI 2.0. This library supports + the R8.5/EFI 1.10 form and R8.6/UEFI 2.0 form and allows common code to + work both ways. + +Arguments: + ReadyToBootEvent Returns the EFI event returned from gBS->CreateEvent(Ex) + +Return: + EFI_SUCCESS - Event was created. + Other - Event was not created. + +--*/ +; + +// +// These macros let code use the same name as boot service driver lib. +// +#define EfiCreateEventLegacyBoot SmmEfiCreateEventLegacyBoot +#define EfiCreateEventReadyToBoot SmmEfiCreateEventReadyToBoot + +#endif |