/**

  NVRAM debug stuff.
  
  by dmazar

**/

//
// For debugging with NVRAM.
// DEBUG_TO_NVRAM = 1 -> enable NVRAM debug
// DEBUG_TO_NVRAM = 0 -> disable NVRAM debug
//
#define DEBUG_TO_NVRAM 0

// Max size of the log.
#define DEBUG_LOG_SIZE				16384 // 16 KB

// Name of the log NVRAM variable.
#define DEBUG_LOG_NVRAM_VAR_NAME	L"DebugLog"

// Apple's boot guid.
#define EFI_APPLE_BOOT_GUID			{0x7C436110, 0xAB2A, 0x4BBB, {0xA8, 0x80, 0xFE, 0x41, 0x99, 0x5C, 0x9F, 0x82}}

// GUID of the log NVRAM variable.
// We'll reuse Apple's boot guid to get access to this var from OS X.
#define DEBUG_LOG_NVRAM_VAR_GUID	EFI_APPLE_BOOT_GUID


//
// DBGnvr macro definition.
// Can be used instead of direct NVRAMDebugLog() call,
// and then NVRAM debug can be enabled/disabled with DEBUG_TO_NVRAM
//
#if DEBUG_TO_NVRAM == 1
#define DBGnvr(...) NVRAMDebugLog(__VA_ARGS__);
#else
#define DBGnvr(...)
#endif


extern EFI_GUID gEfiNVRAMDebugVarGuid;


/** Appends given data to the log and writes it to NVRAM variable. */
EFI_STATUS
EFIAPI
NVRAMDebugLog(CHAR8 *Format, ...);