SmmReportStatusCodeHandler.h revision 9df063a06aef048c042498e2f542fb693e93493a
1476f47800b076c352b3d615868e590592516c5c0klu/** @file 2476f47800b076c352b3d615868e590592516c5c0klu This protocol provides registering and unregistering services to status code consumers while in DXE SMM. 3476f47800b076c352b3d615868e590592516c5c0klu 49df063a06aef048c042498e2f542fb693e93493ahhtian Copyright (c) 2007 - 2009, Intel Corporation. All rights reserved.<BR> 59df063a06aef048c042498e2f542fb693e93493ahhtian 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 { \ 2041d848240fac7a8650466b44859f6557d5cbb600qhuang 0x2ff29fa7, 0x5e80, 0x4ed9, {0xb3, 0x80, 0x1, 0x7d, 0x3c, 0x55, 0x4f, 0xf4} \ 21476f47800b076c352b3d615868e590592516c5c0klu } 22476f47800b076c352b3d615868e590592516c5c0klu 23476f47800b076c352b3d615868e590592516c5c0klutypedef 24476f47800b076c352b3d615868e590592516c5c0kluEFI_STATUS 25476f47800b076c352b3d615868e590592516c5c0klu(EFIAPI *EFI_SMM_RSC_HANDLER_CALLBACK)( 26476f47800b076c352b3d615868e590592516c5c0klu IN EFI_STATUS_CODE_TYPE CodeType, 27476f47800b076c352b3d615868e590592516c5c0klu IN EFI_STATUS_CODE_VALUE Value, 28476f47800b076c352b3d615868e590592516c5c0klu IN UINT32 Instance, 29476f47800b076c352b3d615868e590592516c5c0klu IN EFI_GUID *CallerId, 30476f47800b076c352b3d615868e590592516c5c0klu IN EFI_STATUS_CODE_DATA *Data 31476f47800b076c352b3d615868e590592516c5c0klu); 32476f47800b076c352b3d615868e590592516c5c0klu 33476f47800b076c352b3d615868e590592516c5c0klu/** 34476f47800b076c352b3d615868e590592516c5c0klu Register the callback function for ReportStatusCode() notification. 35476f47800b076c352b3d615868e590592516c5c0klu 36476f47800b076c352b3d615868e590592516c5c0klu When this function is called the function pointer is added to an internal list and any future calls to 37476f47800b076c352b3d615868e590592516c5c0klu ReportStatusCode() will be forwarded to the Callback function. 38476f47800b076c352b3d615868e590592516c5c0klu 39476f47800b076c352b3d615868e590592516c5c0klu @param[in] Callback A pointer to a function of type EFI_RSC_HANDLER_CALLBACK that is called when 40476f47800b076c352b3d615868e590592516c5c0klu a call to ReportStatusCode() occurs. 41476f47800b076c352b3d615868e590592516c5c0klu 42476f47800b076c352b3d615868e590592516c5c0klu @retval EFI_SUCCESS Function was successfully registered. 43476f47800b076c352b3d615868e590592516c5c0klu @retval EFI_INVALID_PARAMETER The callback function was NULL. 44476f47800b076c352b3d615868e590592516c5c0klu @retval EFI_OUT_OF_RESOURCES The internal buffer ran out of space. No more functions can be 45476f47800b076c352b3d615868e590592516c5c0klu registered. 46176648481e5f5edd4cb2770ff7cd25dc8dd426c5qhuang @retval EFI_ALREADY_STARTED The function was already registered. It can't be registered again. 47476f47800b076c352b3d615868e590592516c5c0klu**/ 48476f47800b076c352b3d615868e590592516c5c0klutypedef 49476f47800b076c352b3d615868e590592516c5c0kluEFI_STATUS 50476f47800b076c352b3d615868e590592516c5c0klu(EFIAPI *EFI_SMM_RSC_HANDLER_REGISTER)( 51476f47800b076c352b3d615868e590592516c5c0klu IN EFI_SMM_RSC_HANDLER_CALLBACK Callback 52476f47800b076c352b3d615868e590592516c5c0klu); 53476f47800b076c352b3d615868e590592516c5c0klu 54476f47800b076c352b3d615868e590592516c5c0klu/** 55476f47800b076c352b3d615868e590592516c5c0klu Remove a previously registered callback function from the notification list. 56476f47800b076c352b3d615868e590592516c5c0klu 57476f47800b076c352b3d615868e590592516c5c0klu A callback function must be unregistered before it is deallocated. It is important that any registered 58476f47800b076c352b3d615868e590592516c5c0klu callbacks that are not runtime complaint be unregistered when ExitBootServices() is called. 59476f47800b076c352b3d615868e590592516c5c0klu 60476f47800b076c352b3d615868e590592516c5c0klu @param[in] Callback A pointer to a function of type EFI_SMM_RSC_HANDLER_CALLBACK that is to be 61476f47800b076c352b3d615868e590592516c5c0klu unregistered. 62476f47800b076c352b3d615868e590592516c5c0klu 63476f47800b076c352b3d615868e590592516c5c0klu @retval EFI_SUCCESS The function was successfully unregistered. 64476f47800b076c352b3d615868e590592516c5c0klu @retval EFI_INVALID_PARAMETER The callback function was NULL. 65476f47800b076c352b3d615868e590592516c5c0klu @retval EFI_NOT_FOUND The callback function was not found to be unregistered. 66476f47800b076c352b3d615868e590592516c5c0klu 67476f47800b076c352b3d615868e590592516c5c0klu**/ 68476f47800b076c352b3d615868e590592516c5c0klutypedef 69476f47800b076c352b3d615868e590592516c5c0kluEFI_STATUS 7090f6a2c69c7a2bfd56ec67b11e347692deaf7587qhuang(EFIAPI *EFI_SMM_RSC_HANDLER_UNREGISTER)( 71476f47800b076c352b3d615868e590592516c5c0klu IN EFI_SMM_RSC_HANDLER_CALLBACK Callback 72476f47800b076c352b3d615868e590592516c5c0klu); 73476f47800b076c352b3d615868e590592516c5c0klu 74476f47800b076c352b3d615868e590592516c5c0klutypedef struct _EFI_SMM_RSC_HANDLER_PROTOCOL { 75f711436ba58b7cdb29881b9096dd9f39fe767c42davidhuang EFI_SMM_RSC_HANDLER_REGISTER Register; 76f711436ba58b7cdb29881b9096dd9f39fe767c42davidhuang EFI_SMM_RSC_HANDLER_UNREGISTER Unregister; 77476f47800b076c352b3d615868e590592516c5c0klu} EFI_SMM_RSC_HANDLER_PROTOCOL; 78476f47800b076c352b3d615868e590592516c5c0klu 79f711436ba58b7cdb29881b9096dd9f39fe767c42davidhuangextern EFI_GUID gEfiSmmRscHandlerProtocolGuid; 80476f47800b076c352b3d615868e590592516c5c0klu 81476f47800b076c352b3d615868e590592516c5c0klu#endif // __SMM_REPORT_STATUS_CODE_HANDLER_PROTOCOL_H__ 82