1 /** @file
2   EFI SMM Status Code Protocol as defined in the PI 1.2 specification.
3 
4   This protocol provides the basic status code services while in SMM.
5 
6   Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>
7   This program and the accompanying materials
8   are licensed and made available under the terms and conditions of the BSD License
9   which accompanies this distribution.  The full text of the license may be found at
10   http://opensource.org/licenses/bsd-license.php
11 
12   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14 
15 **/
16 
17 #ifndef _SMM_STATUS_CODE_H__
18 #define _SMM_STATUS_CODE_H__
19 
20 
21 #define EFI_SMM_STATUS_CODE_PROTOCOL_GUID \
22   { \
23     0x6afd2b77, 0x98c1, 0x4acd, {0xa6, 0xf9, 0x8a, 0x94, 0x39, 0xde, 0xf, 0xb1} \
24   }
25 
26 typedef struct _EFI_SMM_STATUS_CODE_PROTOCOL  EFI_SMM_STATUS_CODE_PROTOCOL;
27 
28 /**
29   Service to emit the status code in SMM.
30 
31   The EFI_SMM_STATUS_CODE_PROTOCOL.ReportStatusCode() function enables a driver
32   to emit a status code while in SMM.  The reason that there is a separate protocol definition from the
33   DXE variant of this service is that the publisher of this protocol will provide a service that is
34   capability of coexisting with a foreground operational environment, such as an operating system
35   after the termination of boot services.
36 
37   @param[in] This                Points to this instance of the EFI_SMM_STATUS_CODE_PROTOCOL.
38   @param[in] CodeType            DIndicates the type of status code being reported.
39   @param[in] Value               Describes the current status of a hardware or software entity.
40   @param[in] Instance            The enumeration of a hardware or software entity within the system.
41   @param[in] CallerId            This optional parameter may be used to identify the caller.
42   @param[in] Data                This optional parameter may be used to pass additional data.
43 
44   @retval EFI_SUCCESS            The function completed successfully.
45   @retval EFI_INVALID_PARAMETER  The function should not be completed due to a device error.
46 **/
47 typedef
48 EFI_STATUS
49 (EFIAPI *EFI_SMM_REPORT_STATUS_CODE)(
50   IN CONST EFI_SMM_STATUS_CODE_PROTOCOL  *This,
51   IN EFI_STATUS_CODE_TYPE                CodeType,
52   IN EFI_STATUS_CODE_VALUE               Value,
53   IN UINT32                              Instance,
54   IN CONST EFI_GUID                      *CallerId,
55   IN EFI_STATUS_CODE_DATA                *Data OPTIONAL
56   );
57 
58 struct _EFI_SMM_STATUS_CODE_PROTOCOL {
59   EFI_SMM_REPORT_STATUS_CODE  ReportStatusCode;
60 };
61 
62 extern EFI_GUID gEfiSmmStatusCodeProtocolGuid;
63 
64 #endif
65 
66