SmmReportStatusCodeHandler.h revision 476f47800b076c352b3d615868e590592516c5c0
1476f47800b076c352b3d615868e590592516c5c0klu/** @file 2476f47800b076c352b3d615868e590592516c5c0klu This protocol provides registering and unregistering services to status code consumers while in DXE SMM. 3476f47800b076c352b3d615868e590592516c5c0klu 4476f47800b076c352b3d615868e590592516c5c0klu Copyright (c) 2007 - 2009, Intel Corporation 5476f47800b076c352b3d615868e590592516c5c0klu All rights reserved. This program and the accompanying materials 6476f47800b076c352b3d615868e590592516c5c0klu are licensed and made available under the terms and conditions of the BSD License 7476f47800b076c352b3d615868e590592516c5c0klu which accompanies this distribution. The full text of the license may be found at 8476f47800b076c352b3d615868e590592516c5c0klu http://opensource.org/licenses/bsd-license.php 9476f47800b076c352b3d615868e590592516c5c0klu 10476f47800b076c352b3d615868e590592516c5c0klu THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11476f47800b076c352b3d615868e590592516c5c0klu WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12476f47800b076c352b3d615868e590592516c5c0klu 13476f47800b076c352b3d615868e590592516c5c0klu**/ 14476f47800b076c352b3d615868e590592516c5c0klu 15476f47800b076c352b3d615868e590592516c5c0klu#ifndef __SMM_REPORT_STATUS_CODE_HANDLER_PROTOCOL_H__ 16476f47800b076c352b3d615868e590592516c5c0klu#define __SMM_REPORT_STATUS_CODE_HANDLER_PROTOCOL_H__ 17476f47800b076c352b3d615868e590592516c5c0klu 18476f47800b076c352b3d615868e590592516c5c0klu#define EFI_SMM_RSC_HANDLER_PROTOCOL_GUID \ 19476f47800b076c352b3d615868e590592516c5c0klu { \ 20476f47800b076c352b3d615868e590592516c5c0klu 0x2ff29fa7, 0x5e80, 0x4ed9, 0xb3, 0x80, 0x1, 0x7d, 0x3c, 0x55, 21476f47800b076c352b3d615868e590592516c5c0klu 0x4f, 0xf4 22476f47800b076c352b3d615868e590592516c5c0klu } 23476f47800b076c352b3d615868e590592516c5c0klu 24476f47800b076c352b3d615868e590592516c5c0klutypedef 25476f47800b076c352b3d615868e590592516c5c0kluEFI_STATUS 26476f47800b076c352b3d615868e590592516c5c0klu(EFIAPI *EFI_SMM_RSC_HANDLER_CALLBACK)( 27476f47800b076c352b3d615868e590592516c5c0klu IN EFI_STATUS_CODE_TYPE CodeType, 28476f47800b076c352b3d615868e590592516c5c0klu IN EFI_STATUS_CODE_VALUE Value, 29476f47800b076c352b3d615868e590592516c5c0klu IN UINT32 Instance, 30476f47800b076c352b3d615868e590592516c5c0klu IN EFI_GUID *CallerId, 31476f47800b076c352b3d615868e590592516c5c0klu IN EFI_STATUS_CODE_DATA *Data 32476f47800b076c352b3d615868e590592516c5c0klu); 33476f47800b076c352b3d615868e590592516c5c0klu 34476f47800b076c352b3d615868e590592516c5c0klu/** 35476f47800b076c352b3d615868e590592516c5c0klu Register the callback function for ReportStatusCode() notification. 36476f47800b076c352b3d615868e590592516c5c0klu 37476f47800b076c352b3d615868e590592516c5c0klu When this function is called the function pointer is added to an internal list and any future calls to 38476f47800b076c352b3d615868e590592516c5c0klu ReportStatusCode() will be forwarded to the Callback function. 39476f47800b076c352b3d615868e590592516c5c0klu 40476f47800b076c352b3d615868e590592516c5c0klu @param[in] Callback A pointer to a function of type EFI_RSC_HANDLER_CALLBACK that is called when 41476f47800b076c352b3d615868e590592516c5c0klu a call to ReportStatusCode() occurs. 42476f47800b076c352b3d615868e590592516c5c0klu 43476f47800b076c352b3d615868e590592516c5c0klu @retval EFI_SUCCESS Function was successfully registered. 44476f47800b076c352b3d615868e590592516c5c0klu @retval EFI_INVALID_PARAMETER The callback function was NULL. 45476f47800b076c352b3d615868e590592516c5c0klu @retval EFI_OUT_OF_RESOURCES The internal buffer ran out of space. No more functions can be 46476f47800b076c352b3d615868e590592516c5c0klu registered. 47476f47800b076c352b3d615868e590592516c5c0klu @retval EFI_ALREADY_STARTED The function was already registered. It can’t be registered again. 48476f47800b076c352b3d615868e590592516c5c0klu**/ 49476f47800b076c352b3d615868e590592516c5c0klutypedef 50476f47800b076c352b3d615868e590592516c5c0kluEFI_STATUS 51476f47800b076c352b3d615868e590592516c5c0klu(EFIAPI *EFI_SMM_RSC_HANDLER_REGISTER)( 52476f47800b076c352b3d615868e590592516c5c0klu IN EFI_SMM_RSC_HANDLER_CALLBACK Callback 53476f47800b076c352b3d615868e590592516c5c0klu); 54476f47800b076c352b3d615868e590592516c5c0klu 55476f47800b076c352b3d615868e590592516c5c0klu/** 56476f47800b076c352b3d615868e590592516c5c0klu Remove a previously registered callback function from the notification list. 57476f47800b076c352b3d615868e590592516c5c0klu 58476f47800b076c352b3d615868e590592516c5c0klu A callback function must be unregistered before it is deallocated. It is important that any registered 59476f47800b076c352b3d615868e590592516c5c0klu callbacks that are not runtime complaint be unregistered when ExitBootServices() is called. 60476f47800b076c352b3d615868e590592516c5c0klu 61476f47800b076c352b3d615868e590592516c5c0klu @param[in] Callback A pointer to a function of type EFI_SMM_RSC_HANDLER_CALLBACK that is to be 62476f47800b076c352b3d615868e590592516c5c0klu unregistered. 63476f47800b076c352b3d615868e590592516c5c0klu 64476f47800b076c352b3d615868e590592516c5c0klu @retval EFI_SUCCESS The function was successfully unregistered. 65476f47800b076c352b3d615868e590592516c5c0klu @retval EFI_INVALID_PARAMETER The callback function was NULL. 66476f47800b076c352b3d615868e590592516c5c0klu @retval EFI_NOT_FOUND The callback function was not found to be unregistered. 67476f47800b076c352b3d615868e590592516c5c0klu 68476f47800b076c352b3d615868e590592516c5c0klu**/ 69476f47800b076c352b3d615868e590592516c5c0klutypedef 70476f47800b076c352b3d615868e590592516c5c0kluEFI_STATUS 71476f47800b076c352b3d615868e590592516c5c0klu(EFIAPI *EFI_SMM_RSC_HANDLER_UNREGISTER) ( 72476f47800b076c352b3d615868e590592516c5c0klu IN EFI_SMM_RSC_HANDLER_CALLBACK Callback 73476f47800b076c352b3d615868e590592516c5c0klu); 74476f47800b076c352b3d615868e590592516c5c0klu 75476f47800b076c352b3d615868e590592516c5c0klutypedef struct _EFI_SMM_RSC_HANDLER_PROTOCOL { 76476f47800b076c352b3d615868e590592516c5c0klu EFI_SMM_RSC_HANDLER_REGISTER Register; 77476f47800b076c352b3d615868e590592516c5c0klu SMM_RSC_HANDLER_UNREGISTER Unregister; 78476f47800b076c352b3d615868e590592516c5c0klu} EFI_SMM_RSC_HANDLER_PROTOCOL; 79476f47800b076c352b3d615868e590592516c5c0klu 80476f47800b076c352b3d615868e590592516c5c0kluextern gEfiSmmRscHandlerProtocolGuid; 81476f47800b076c352b3d615868e590592516c5c0klu 82476f47800b076c352b3d615868e590592516c5c0klu#endif // __SMM_REPORT_STATUS_CODE_HANDLER_PROTOCOL_H__ 83