1199767fToomas Soome/* $FreeBSD$ */
2199767fToomas Soome#ifndef _EFI_DEBUG_H
3199767fToomas Soome#define _EFI_DEBUG_H
4199767fToomas Soome
5199767fToomas Soome/*++
6199767fToomas Soome
7199767fToomas SoomeCopyright (c)  1999 - 2002 Intel Corporation. All rights reserved
8199767fToomas SoomeThis software and associated documentation (if any) is furnished
9199767fToomas Soomeunder a license and may only be used or copied in accordance
10199767fToomas Soomewith the terms of the license. Except as permitted by such
11199767fToomas Soomelicense, no part of this software or documentation may be
12199767fToomas Soomereproduced, stored in a retrieval system, or transmitted in any
13199767fToomas Soomeform or by any means without the express written consent of
14199767fToomas SoomeIntel Corporation.
15199767fToomas Soome
16199767fToomas SoomeModule Name:
17199767fToomas Soome
18199767fToomas Soome    efidebug.h
19199767fToomas Soome
20199767fToomas SoomeAbstract:
21199767fToomas Soome
22199767fToomas Soome    EFI library debug functions
23199767fToomas Soome
24199767fToomas Soome
25199767fToomas Soome
26199767fToomas SoomeRevision History
27199767fToomas Soome
28199767fToomas Soome--*/
29199767fToomas Soome
30199767fToomas Soomeextern UINTN     EFIDebug;
31199767fToomas Soome
32199767fToomas Soome#if EFI_DEBUG
33199767fToomas Soome
34199767fToomas Soome    #define DBGASSERT(a)        DbgAssert(__FILE__, __LINE__, #a)
35199767fToomas Soome    #define DEBUG(a)            DbgPrint a
36199767fToomas Soome
37199767fToomas Soome#else
38199767fToomas Soome
39199767fToomas Soome    #define DBGASSERT(a)
40199767fToomas Soome    #define DEBUG(a)
41199767fToomas Soome
42199767fToomas Soome#endif
43199767fToomas Soome
44199767fToomas Soome#if EFI_DEBUG_CLEAR_MEMORY
45199767fToomas Soome
46199767fToomas Soome    #define DBGSETMEM(a,l)      SetMem(a,l,(CHAR8)BAD_POINTER)
47199767fToomas Soome
48199767fToomas Soome#else
49199767fToomas Soome
50199767fToomas Soome    #define DBGSETMEM(a,l)
51199767fToomas Soome
52199767fToomas Soome#endif
53199767fToomas Soome
54199767fToomas Soome#define D_INIT        0x00000001          // Initialization style messages
55199767fToomas Soome#define D_WARN        0x00000002          // Warnings
56199767fToomas Soome#define D_LOAD        0x00000004          // Load events
57199767fToomas Soome#define D_FS          0x00000008          // EFI File system
58199767fToomas Soome#define D_POOL        0x00000010          // Alloc & Free's
59199767fToomas Soome#define D_PAGE        0x00000020          // Alloc & Free's
60199767fToomas Soome#define D_INFO        0x00000040          // Verbose
61199767fToomas Soome#define D_VARIABLE    0x00000100          // Variable
62199767fToomas Soome#define D_VAR         0x00000100          // Variable
63199767fToomas Soome#define D_BM          0x00000400          // Boot Manager
64199767fToomas Soome#define D_BLKIO       0x00001000          // BlkIo Driver
65199767fToomas Soome#define D_BLKIO_ULTRA 0x00002000          // BlkIo Driver
66199767fToomas Soome#define D_NET         0x00004000          // SNI Driver
67199767fToomas Soome#define D_NET_ULTRA   0x00008000          // SNI Driver
68199767fToomas Soome#define D_UNDI        0x00010000          // UNDI Driver
69199767fToomas Soome#define D_LOADFILE    0x00020000          // UNDI Driver
70199767fToomas Soome#define D_EVENT       0x00080000          // Event messages
71199767fToomas Soome
72199767fToomas Soome#define D_ERROR       0x80000000          // Error
73199767fToomas Soome
74199767fToomas Soome#define D_RESERVED    0x7ff40A80          // Bits not reserved above
75199767fToomas Soome
76199767fToomas Soome//
77199767fToomas Soome// Current Debug level of the system, value of EFIDebug
78199767fToomas Soome//
79199767fToomas Soome//#define EFI_DBUG_MASK   (D_ERROR | D_WARN | D_LOAD | D_BLKIO | D_INIT)
80199767fToomas Soome#define EFI_DBUG_MASK   (D_ERROR)
81199767fToomas Soome
82199767fToomas Soome//
83199767fToomas Soome//
84199767fToomas Soome//
85199767fToomas Soome
86199767fToomas Soome#if EFI_DEBUG
87199767fToomas Soome
88199767fToomas Soome    #define ASSERT(a)               if(!(a))       DBGASSERT(a)
89199767fToomas Soome    #define ASSERT_LOCKED(l)        if(!(l)->Lock) DBGASSERT(l not locked)
90199767fToomas Soome    #define ASSERT_STRUCT(p,t)      DBGASSERT(t not structure), p
91199767fToomas Soome
92199767fToomas Soome#else
93199767fToomas Soome
94199767fToomas Soome    #define ASSERT(a)
95199767fToomas Soome    #define ASSERT_LOCKED(l)
96199767fToomas Soome    #define ASSERT_STRUCT(p,t)
97199767fToomas Soome
98199767fToomas Soome#endif
99199767fToomas Soome
100199767fToomas Soome//
101199767fToomas Soome// Prototypes
102199767fToomas Soome//
103199767fToomas Soome
104199767fToomas SoomeINTN
105199767fToomas SoomeDbgAssert (
106199767fToomas Soome    CHAR8   *file,
107199767fToomas Soome    INTN    lineno,
108199767fToomas Soome    CHAR8   *string
109199767fToomas Soome    );
110199767fToomas Soome
111199767fToomas SoomeINTN
112199767fToomas SoomeDbgPrint (
113199767fToomas Soome    INTN    mask,
114199767fToomas Soome    CHAR8   *format,
115199767fToomas Soome    ...
116199767fToomas Soome    );
117199767fToomas Soome
118199767fToomas Soome#endif