Data Structures | |
struct | _EFI_SMM_ENTRY_CONTEXT |
struct | _EFI_SMM_SYSTEM_TABLE2 |
Defines | |
#define | SMM_SMST_SIGNATURE SIGNATURE_32 ('S', 'M', 'S', 'T') |
#define | SMM_SPECIFICATION_MAJOR_REVISION 1 |
#define | SMM_SPECIFICATION_MINOR_REVISION 40 |
#define | EFI_SMM_SYSTEM_TABLE2_REVISION ((SMM_SPECIFICATION_MAJOR_REVISION<<16) | (SMM_SPECIFICATION_MINOR_REVISION)) |
Typedefs | |
typedef struct _EFI_SMM_SYSTEM_TABLE2 | EFI_SMM_SYSTEM_TABLE2 |
typedef EFI_STATUS(EFIAPI * | EFI_SMM_INSTALL_CONFIGURATION_TABLE2 )(IN CONST EFI_SMM_SYSTEM_TABLE2 *SystemTable, IN CONST EFI_GUID *Guid, IN VOID *Table, IN UINTN TableSize) |
typedef EFI_STATUS(EFIAPI * | EFI_SMM_STARTUP_THIS_AP )(IN EFI_AP_PROCEDURE Procedure, IN UINTN CpuNumber, IN OUT VOID *ProcArguments) |
typedef EFI_STATUS(EFIAPI * | EFI_SMM_NOTIFY_FN )(IN CONST EFI_GUID *Protocol, IN VOID *Interface, IN EFI_HANDLE Handle) |
typedef EFI_STATUS(EFIAPI * | EFI_SMM_REGISTER_PROTOCOL_NOTIFY )(IN CONST EFI_GUID *Protocol, IN EFI_SMM_NOTIFY_FN Function, OUT VOID **Registration) |
typedef EFI_STATUS(EFIAPI * | EFI_SMM_INTERRUPT_MANAGE )(IN CONST EFI_GUID *HandlerType, IN CONST VOID *Context, IN OUT VOID *CommBuffer, IN OUT UINTN *CommBufferSize) |
typedef EFI_STATUS(EFIAPI * | EFI_SMM_HANDLER_ENTRY_POINT2 )(IN EFI_HANDLE DispatchHandle, IN CONST VOID *Context, IN OUT VOID *CommBuffer, IN OUT UINTN *CommBufferSize) |
typedef EFI_STATUS(EFIAPI * | EFI_SMM_INTERRUPT_REGISTER )(IN EFI_SMM_HANDLER_ENTRY_POINT2 Handler, IN CONST EFI_GUID *HandlerType, OUT EFI_HANDLE *DispatchHandle) |
typedef EFI_STATUS(EFIAPI * | EFI_SMM_INTERRUPT_UNREGISTER )(IN EFI_HANDLE DispatchHandle) |
typedef struct _EFI_SMM_ENTRY_CONTEXT | EFI_SMM_ENTRY_CONTEXT |
typedef VOID(EFIAPI * | EFI_SMM_ENTRY_POINT )(IN CONST EFI_SMM_ENTRY_CONTEXT *SmmEntryContext) |
Copyright (c) 2009 - 2015, 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.
#define EFI_SMM_SYSTEM_TABLE2_REVISION ((SMM_SPECIFICATION_MAJOR_REVISION<<16) | (SMM_SPECIFICATION_MINOR_REVISION)) |
#define SMM_SMST_SIGNATURE SIGNATURE_32 ('S', 'M', 'S', 'T') |
The System Management System Table (SMST) signature
#define SMM_SPECIFICATION_MAJOR_REVISION 1 |
The System Management System Table (SMST) revision is 1.4
#define SMM_SPECIFICATION_MINOR_REVISION 40 |
typedef struct _EFI_SMM_ENTRY_CONTEXT EFI_SMM_ENTRY_CONTEXT |
Processor information and functionality needed by SMM Foundation.
typedef VOID(EFIAPI * EFI_SMM_ENTRY_POINT)(IN CONST EFI_SMM_ENTRY_CONTEXT *SmmEntryContext) |
This function is the main entry point to the SMM Foundation.
[in] | SmmEntryContext | Processor information and functionality needed by SMM Foundation. |
typedef EFI_STATUS(EFIAPI * EFI_SMM_HANDLER_ENTRY_POINT2)(IN EFI_HANDLE DispatchHandle, IN CONST VOID *Context, IN OUT VOID *CommBuffer, IN OUT UINTN *CommBufferSize) |
Main entry point for an SMM handler dispatch or communicate-based callback.
[in] | DispatchHandle | The unique handle assigned to this handler by SmiHandlerRegister(). |
[in] | Context | Points to an optional handler context which was specified when the handler was registered. |
[in,out] | CommBuffer | A pointer to a collection of data in memory that will be conveyed from a non-SMM environment into an SMM environment. |
[in,out] | CommBufferSize | The size of the CommBuffer. |
EFI_SUCCESS | The interrupt was handled and quiesced. No other handlers should still be called. | |
EFI_WARN_INTERRUPT_SOURCE_QUIESCED | The interrupt has been quiesced but other handlers should still be called. | |
EFI_WARN_INTERRUPT_SOURCE_PENDING | The interrupt is still pending and other handlers should still be called. | |
EFI_INTERRUPT_PENDING | The interrupt could not be quiesced. |
typedef EFI_STATUS(EFIAPI * EFI_SMM_INSTALL_CONFIGURATION_TABLE2)(IN CONST EFI_SMM_SYSTEM_TABLE2 *SystemTable, IN CONST EFI_GUID *Guid, IN VOID *Table, IN UINTN TableSize) |
Adds, updates, or removes a configuration table entry from the System Management System Table.
The SmmInstallConfigurationTable() function is used to maintain the list of configuration tables that are stored in the System Management System Table. The list is stored as an array of (GUID, Pointer) pairs. The list must be allocated from pool memory with PoolType set to EfiRuntimeServicesData.
[in] | SystemTable | A pointer to the SMM System Table (SMST). |
[in] | Guid | A pointer to the GUID for the entry to add, update, or remove. |
[in] | Table | A pointer to the buffer of the table to add. |
[in] | TableSize | The size of the table to install. |
EFI_SUCCESS | The (Guid, Table) pair was added, updated, or removed. | |
EFI_INVALID_PARAMETER | Guid is not valid. | |
EFI_NOT_FOUND | An attempt was made to delete a non-existent entry. | |
EFI_OUT_OF_RESOURCES | There is not enough memory available to complete the operation. |
typedef EFI_STATUS(EFIAPI * EFI_SMM_INTERRUPT_MANAGE)(IN CONST EFI_GUID *HandlerType, IN CONST VOID *Context, IN OUT VOID *CommBuffer, IN OUT UINTN *CommBufferSize) |
Manage SMI of a particular type.
[in] | HandlerType | Points to the handler type or NULL for root SMI handlers. |
[in] | Context | Points to an optional context buffer. |
[in,out] | CommBuffer | Points to the optional communication buffer. |
[in,out] | CommBufferSize | Points to the size of the optional communication buffer. |
EFI_WARN_INTERRUPT_SOURCE_PENDING | Interrupt source was processed successfully but not quiesced. | |
EFI_INTERRUPT_PENDING | One or more SMI sources could not be quiesced. | |
EFI_NOT_FOUND | Interrupt source was not handled or quiesced. | |
EFI_SUCCESS | Interrupt source was handled and quiesced. |
typedef EFI_STATUS(EFIAPI * EFI_SMM_INTERRUPT_REGISTER)(IN EFI_SMM_HANDLER_ENTRY_POINT2 Handler, IN CONST EFI_GUID *HandlerType, OUT EFI_HANDLE *DispatchHandle) |
Registers a handler to execute within SMM.
[in] | Handler | Handler service funtion pointer. |
[in] | HandlerType | Points to the handler type or NULL for root SMI handlers. |
[out] | DispatchHandle | On return, contains a unique handle which can be used to later unregister the handler function. |
EFI_SUCCESS | SMI handler added successfully. | |
EFI_INVALID_PARAMETER | Handler is NULL or DispatchHandle is NULL. |
typedef EFI_STATUS(EFIAPI * EFI_SMM_INTERRUPT_UNREGISTER)(IN EFI_HANDLE DispatchHandle) |
Unregister a handler in SMM.
[in] | DispatchHandle | The handle that was specified when the handler was registered. |
EFI_SUCCESS | Handler function was successfully unregistered. | |
EFI_INVALID_PARAMETER | DispatchHandle does not refer to a valid handle. |
typedef EFI_STATUS(EFIAPI * EFI_SMM_NOTIFY_FN)(IN CONST EFI_GUID *Protocol, IN VOID *Interface, IN EFI_HANDLE Handle) |
Function prototype for protocol install notification.
[in] | Protocol | Points to the protocol's unique identifier. |
[in] | Interface | Points to the interface instance. |
[in] | Handle | The handle on which the interface was installed. |
typedef EFI_STATUS(EFIAPI * EFI_SMM_REGISTER_PROTOCOL_NOTIFY)(IN CONST EFI_GUID *Protocol, IN EFI_SMM_NOTIFY_FN Function, OUT VOID **Registration) |
Register a callback function be called when a particular protocol interface is installed.
The SmmRegisterProtocolNotify() function creates a registration Function that is to be called whenever a protocol interface is installed for Protocol by SmmInstallProtocolInterface(). If Function == NULL and Registration is an existing registration, then the callback is unhooked.
[in] | Protocol | The unique ID of the protocol for which the event is to be registered. |
[in] | Function | Points to the notification function. |
[out] | Registration | A pointer to a memory location to receive the registration value. |
EFI_SUCCESS | Successfully returned the registration record that has been added or unhooked. | |
EFI_INVALID_PARAMETER | Protocol is NULL or Registration is NULL. | |
EFI_OUT_OF_RESOURCES | Not enough memory resource to finish the request. | |
EFI_NOT_FOUND | If the registration is not found when Function == NULL. |
typedef EFI_STATUS(EFIAPI * EFI_SMM_STARTUP_THIS_AP)(IN EFI_AP_PROCEDURE Procedure, IN UINTN CpuNumber, IN OUT VOID *ProcArguments) |
The SmmStartupThisAp() lets the caller to get one distinct application processor (AP) in the enabled processor pool to execute a caller-provided code stream while in SMM. It runs the given code on this processor and reports the status. It must be noted that the supplied code stream will be run only on an enabled processor which has also entered SMM.
[in] | Procedure | A pointer to the code stream to be run on the designated AP of the system. |
[in] | CpuNumber | The zero-based index of the processor number of the AP on which the code stream is supposed to run. |
[in,out] | ProcArguments | Allow the caller to pass a list of parameters to the code that is run by the AP. |
EFI_SUCCESS | The call was successful and the return parameters are valid. | |
EFI_INVALID_PARAMETER | The input arguments are out of range. | |
EFI_INVALID_PARAMETER | The CPU requested is not available on this SMI invocation. | |
EFI_INVALID_PARAMETER | The CPU cannot support an additional service invocation. |
typedef struct _EFI_SMM_SYSTEM_TABLE2 EFI_SMM_SYSTEM_TABLE2 |