/** @file

  Debug Mask Protocol.

Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#pragma once

///
/// Protocol GUID for DXE Phase Debug Mask support
///
#define EFI_DEBUG_MASK_PROTOCOL_GUID \
  { 0x4c8a2451, 0xc207, 0x405b, {0x96, 0x94, 0x99, 0xea, 0x13, 0x25, 0x13, 0x41} }

///
/// Forward reference for pure ANSI compatability
///
typedef struct _EFI_DEBUG_MASK_PROTOCOL EFI_DEBUG_MASK_PROTOCOL;

///
///
///
#define EFI_DEBUG_MASK_REVISION  0x00010000

//
// DebugMask member functions definition
//
typedef
EFI_STATUS
(EFIAPI *EFI_GET_DEBUG_MASK)(
  IN EFI_DEBUG_MASK_PROTOCOL  *This,
  IN OUT UINTN                *CurrentDebugMask
  );

typedef
EFI_STATUS
(EFIAPI *EFI_SET_DEBUG_MASK)(
  IN EFI_DEBUG_MASK_PROTOCOL  *This,
  IN UINTN                    NewDebugMask
  );

///
/// DebugMask protocol definition
///
struct _EFI_DEBUG_MASK_PROTOCOL {
  INT64                 Revision;
  EFI_GET_DEBUG_MASK    GetDebugMask;
  EFI_SET_DEBUG_MASK    SetDebugMask;
};

extern EFI_GUID  gEfiDebugMaskProtocolGuid;

///
/// GUID used to store the global debug mask in an the "EFIDebug" EFI Variabe
/// Also used as a GUIDed HOB that contains a UINT32 debug mask default value
///
#define EFI_GENERIC_VARIABLE_GUID \
  { 0x59d1c24f, 0x50f1, 0x401a, {0xb1, 0x01, 0xf3, 0x3e, 0x0d, 0xae, 0xd4, 0x43} }

#define DEBUG_MASK_VARIABLE_NAME  L"EFIDebug"

extern EFI_GUID  gEfiGenericVariableGuid;
