11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  Copyright (c) Eicon Networks, 2002.
51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  This source file is supplied for the use with
71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  Eicon Networks range of DIVA Server Adapters.
81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  Eicon File Revision :    2.1
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  This program is free software; you can redistribute it and/or modify
121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  it under the terms of the GNU General Public License as published by
131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  the Free Software Foundation; either version 2, or (at your option)
141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  any later version.
151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  This program is distributed in the hope that it will be useful,
171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  but WITHOUT ANY WARRANTY OF ANY KIND WHATSOEVER INCLUDING ANY
181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  See the GNU General Public License for more details.
201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  You should have received a copy of the GNU General Public License
221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  along with this program; if not, write to the Free Software
231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if !defined(__DEBUGLIB_H__)
271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define __DEBUGLIB_H__
281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <stdarg.h>
291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * define global debug priorities
311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_LOG  0x00000001 /* always worth mentioning */
331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_FTL  0x00000002 /* always sampled error    */
341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_ERR  0x00000004 /* any kind of error       */
351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_TRC  0x00000008 /* verbose information     */
361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_XLOG  0x00000010 /* old xlog info           */
371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_MXLOG 0x00000020 /* maestra xlog info    */
381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_FTL_MXLOG 0x00000021 /* fatal maestra xlog info */
391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_EVL  0x00000080 /* special NT eventlog msg */
401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_COMPAT (DL_MXLOG | DL_XLOG)
411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_PRIOR_MASK (DL_EVL | DL_COMPAT | DL_TRC | DL_ERR | DL_FTL | DL_LOG)
421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_LOG  0x0100
431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_FTL  0x0200
441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_ERR  0x0300
451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_TRC  0x0400
461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_XLOG 0x0500
471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_MXLOG 0x0600
481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_FTL_MXLOG 0x0600
491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_EVL  0x0800
501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * define OS (operating system interface) debuglevel
521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_REG  0x00000100 /* init/query registry     */
541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_MEM  0x00000200 /* memory management       */
551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_SPL  0x00000400 /* event/spinlock handling */
561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_IRP  0x00000800 /* I/O request handling    */
571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_TIM  0x00001000 /* timer/watchdog handling */
581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_BLK  0x00002000 /* raw data block contents */
591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_OS_MASK (DL_BLK | DL_TIM | DL_IRP | DL_SPL | DL_MEM | DL_REG)
601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_REG  0x0900
611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_MEM  0x0A00
621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_SPL  0x0B00
631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_IRP  0x0C00
641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_TIM  0x0D00
651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_BLK  0x0E00
661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * define ISDN (connection interface) debuglevel
681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_TAPI  0x00010000 /* debug TAPI interface    */
701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_NDIS  0x00020000 /* debug NDIS interface    */
711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_CONN  0x00040000 /* connection handling     */
721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_STAT  0x00080000 /* trace state machines    */
731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_SEND  0x00100000 /* trace raw xmitted data  */
741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_RECV  0x00200000 /* trace raw received data */
751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_DATA  (DL_SEND | DL_RECV)
761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_ISDN_MASK (DL_DATA | DL_STAT | DL_CONN | DL_NDIS | DL_TAPI)
771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_TAPI 0x1100
781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_NDIS 0x1200
791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_CONN 0x1300
801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_STAT 0x1400
811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_SEND 0x1500
821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_RECV 0x1600
831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * define some private (unspecified) debuglevel
851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_PRV0  0x01000000
871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_PRV1  0x02000000
881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_PRV2  0x04000000
891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_PRV3  0x08000000
901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_PRIV_MASK (DL_PRV0 | DL_PRV1 | DL_PRV2 | DL_PRV3)
911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_PRV0 0x1900
921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_PRV1 0x1A00
931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_PRV2 0x1B00
941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_PRV3 0x1C00
951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DT_INDEX(x)  ((x) & 0x000F)
961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_INDEX(x)  ((((x) >> 8) & 0x00FF) - 1)
971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DLI_NAME(x)  ((x) & 0xFF00)
981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Debug mask for kernel mode tracing, if set the output is also sent to
1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * the system debug function. Requires that the project is compiled
1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * with _KERNEL_DBG_PRINT_
1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_TO_KERNEL    0x40000000
1041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef DIVA_NO_DEBUGLIB
1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define myDbgPrint_LOG(x...) do { } while(0);
1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define myDbgPrint_FTL(x...) do { } while(0);
1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define myDbgPrint_ERR(x...) do { } while(0);
1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define myDbgPrint_TRC(x...) do { } while(0);
1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define myDbgPrint_MXLOG(x...) do { } while(0);
1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define myDbgPrint_EVL(x...) do { } while(0);
1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define myDbgPrint_REG(x...) do { } while(0);
1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define myDbgPrint_MEM(x...) do { } while(0);
1141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define myDbgPrint_SPL(x...) do { } while(0);
1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define myDbgPrint_IRP(x...) do { } while(0);
1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define myDbgPrint_TIM(x...) do { } while(0);
1171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define myDbgPrint_BLK(x...) do { } while(0);
1181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define myDbgPrint_TAPI(x...) do { } while(0);
1191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define myDbgPrint_NDIS(x...) do { } while(0);
1201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define myDbgPrint_CONN(x...) do { } while(0);
1211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define myDbgPrint_STAT(x...) do { } while(0);
1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define myDbgPrint_SEND(x...) do { } while(0);
1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define myDbgPrint_RECV(x...) do { } while(0);
1241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define myDbgPrint_PRV0(x...) do { } while(0);
1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define myDbgPrint_PRV1(x...) do { } while(0);
1261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define myDbgPrint_PRV2(x...) do { } while(0);
1271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define myDbgPrint_PRV3(x...) do { } while(0);
1281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_TEST(func,args) do { } while(0);
1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_EVL_ID(args) do { } while(0);
1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else /* DIVA_NO_DEBUGLIB */
1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * define low level macros for formatted & raw debugging
1341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
1351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_DECL(func) extern void  myDbgPrint_##func (char *, ...) ;
1361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsDBG_DECL(LOG)
1371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsDBG_DECL(FTL)
1381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsDBG_DECL(ERR)
1391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsDBG_DECL(TRC)
1401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsDBG_DECL(MXLOG)
1411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsDBG_DECL(FTL_MXLOG)
1421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void  myDbgPrint_EVL (long, ...) ;
1431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsDBG_DECL(REG)
1441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsDBG_DECL(MEM)
1451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsDBG_DECL(SPL)
1461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsDBG_DECL(IRP)
1471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsDBG_DECL(TIM)
1481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsDBG_DECL(BLK)
1491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsDBG_DECL(TAPI)
1501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsDBG_DECL(NDIS)
1511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsDBG_DECL(CONN)
1521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsDBG_DECL(STAT)
1531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsDBG_DECL(SEND)
1541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsDBG_DECL(RECV)
1551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsDBG_DECL(PRV0)
1561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsDBG_DECL(PRV1)
1571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsDBG_DECL(PRV2)
1581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsDBG_DECL(PRV3)
1591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef  _KERNEL_DBG_PRINT_
1601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
1611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * tracing to maint and kernel if selected in the trace mask.
1621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
1631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_TEST(func,args) \
1641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ if ( (myDriverDebugHandle.dbgMask) & (unsigned long)DL_##func ) \
1651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds { \
1661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        if ( (myDriverDebugHandle.dbgMask) & DL_TO_KERNEL ) \
1671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds            {DbgPrint args; DbgPrint ("\r\n");} \
1681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        myDbgPrint_##func args ; \
1691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} }
1701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
1711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
1721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Standard tracing to maint driver.
1731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
1741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_TEST(func,args) \
1751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ if ( (myDriverDebugHandle.dbgMask) & (unsigned long)DL_##func ) \
1761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds { myDbgPrint_##func args ; \
1771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} }
1781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
1791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
180c66ed655adc5e43b7143421f36d2a23f74398538Joe Perches * For event level debug use a separate define, the parameter are
1811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * different and cause compiler errors on some systems.
1821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
1831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_EVL_ID(args) \
1841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ if ( (myDriverDebugHandle.dbgMask) & (unsigned long)DL_EVL ) \
1851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds { myDbgPrint_EVL args ; \
1861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} }
1871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* DIVA_NO_DEBUGLIB */
1891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_LOG(args)  DBG_TEST(LOG, args)
1911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_FTL(args)  DBG_TEST(FTL, args)
1921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_ERR(args)  DBG_TEST(ERR, args)
1931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_TRC(args)  DBG_TEST(TRC, args)
1941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_MXLOG(args)  DBG_TEST(MXLOG, args)
1951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_FTL_MXLOG(args) DBG_TEST(FTL_MXLOG, args)
1961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_EVL(args)  DBG_EVL_ID(args)
1971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_REG(args)  DBG_TEST(REG, args)
1981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_MEM(args)  DBG_TEST(MEM, args)
1991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_SPL(args)  DBG_TEST(SPL, args)
2001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_IRP(args)  DBG_TEST(IRP, args)
2011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_TIM(args)  DBG_TEST(TIM, args)
2021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_BLK(args)  DBG_TEST(BLK, args)
2031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_TAPI(args)  DBG_TEST(TAPI, args)
2041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_NDIS(args)  DBG_TEST(NDIS, args)
2051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_CONN(args)  DBG_TEST(CONN, args)
2061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_STAT(args)  DBG_TEST(STAT, args)
2071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_SEND(args)  DBG_TEST(SEND, args)
2081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_RECV(args)  DBG_TEST(RECV, args)
2091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_PRV0(args)  DBG_TEST(PRV0, args)
2101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_PRV1(args)  DBG_TEST(PRV1, args)
2111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_PRV2(args)  DBG_TEST(PRV2, args)
2121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_PRV3(args)  DBG_TEST(PRV3, args)
2131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
2141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * prototypes for debug register/deregister functions in "debuglib.c"
2151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
2161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef DIVA_NO_DEBUGLIB
2171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DbgRegister(name,tag, mask) do { } while(0)
2181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DbgDeregister() do { } while(0)
2191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DbgSetLevel(mask) do { } while(0)
2201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
2211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern DIVA_DI_PRINTF dprintf;
2221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern int  DbgRegister (char *drvName, char *drvTag, unsigned long dbgMask) ;
2231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void DbgDeregister (void) ;
2241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void DbgSetLevel (unsigned long dbgMask) ;
2251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
2261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
2271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * driver internal structure for debug handling;
2281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * in client drivers this structure is maintained in "debuglib.c",
2291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * in the debug driver "debug.c" maintains a chain of such structs.
2301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
2311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct _DbgHandle_ *pDbgHandle ;
2321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef void ( * DbgEnd) (pDbgHandle) ;
2331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef void ( * DbgLog) (unsigned short, int, char *, va_list) ;
2341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef void ( * DbgOld) (unsigned short, char *, va_list) ;
2351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef void ( * DbgEv)  (unsigned short, unsigned long, va_list) ;
2361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef void ( * DbgIrq) (unsigned short, int, char *, va_list) ;
2371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct _DbgHandle_
23873ac36ea14fd18ea3dc057e41b16ff31a3c0bd5aColy Li{ char    Registered ; /* driver successfully registered */
2391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_HANDLE_REG_NEW 0x01  /* this (new) structure    */
2401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_HANDLE_REG_OLD 0x7f  /* old structure (see below)  */
2411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds char    Version;  /* version of this structure  */
2421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_HANDLE_VERSION 1   /* contains dbg_old function now */
2431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_HANDLE_VER_EXT  2           /* pReserved points to extended info*/
2441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds short               id ;   /* internal id of registered driver */
2451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  struct _DbgHandle_ *next ;   /* ptr to next registered driver    */
2461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct /*LARGE_INTEGER*/ {
2471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  unsigned long LowPart;
2481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  long          HighPart;
2491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds }     regTime ;  /* timestamp for registration       */
2501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void               *pIrp ;   /* ptr to pending i/o request       */
2511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long       dbgMask ;  /* current debug mask               */
252c2dddf941409635601e56c1990c5ab0bd395742cDan Carpenter char                drvName[128] ; /* ASCII name of registered driver  */
2531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds char                drvTag[64] ; /* revision string     */
2541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds DbgEnd              dbg_end ;  /* function for debug closing       */
2551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds DbgLog              dbg_prt ;  /* function for debug appending     */
2561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds DbgOld              dbg_old ;  /* function for old debug appending */
2571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds DbgEv       dbg_ev ;  /* function for Windows NT Eventlog */
2581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds DbgIrq    dbg_irq ;  /* function for irql checked debug  */
2591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void      *pReserved3 ;
2601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} _DbgHandle_ ;
2611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern _DbgHandle_ myDriverDebugHandle ;
2621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct _OldDbgHandle_
2631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ struct _OldDbgHandle_ *next ;
2641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void                *pIrp ;
2651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds long    regTime[2] ;
2661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long       dbgMask ;
2671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds short               id ;
2681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds char                drvName[78] ;
2691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds DbgEnd              dbg_end ;
2701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds DbgLog              dbg_prt ;
2711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} _OldDbgHandle_ ;
2721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* the differences in DbgHandles
2731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds   old:    tmp:     new:
2741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0 long next  char Registered  char Registered
2751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds       char filler   char Version
2761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds       short id    short id
2771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4 long pIrp  long    regTime.lo  long next
2781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8 long    regTime.lo long    regTime.hi  long    regTime.lo
2791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 12 long    regTime.hi long next   long regTime.hi
2801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 16 long dbgMask  long pIrp   long pIrp
2811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 20 short id   long dbgMask   long dbgMask
2821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 22 char    drvName[78] ..
2831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 24 ..     char drvName[16]  char drvName[16]
2841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 40 ..     char drvTag[64]  char drvTag[64]
2851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 100 void *dbg_end ..      ..
2861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 104 void *dbg_prt void *dbg_end  void *dbg_end
2871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 108 ..     void *dbg_prt  void *dbg_prt
2881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 112 ..     ..      void *dbg_old
2891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 116 ..     ..      void *dbg_ev
2901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 120 ..     ..      void *dbg_irq
2911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 124 ..     ..      void *pReserved3
2921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ( new->id == 0 && *((short *)&new->dbgMask) == -1 ) identifies "old",
2931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds new->Registered and new->Version overlay old->next,
2941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds new->next overlays old->pIrp, new->regTime matches old->regTime and
2951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds thus these fields can be maintained in new struct whithout trouble;
2961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds id, dbgMask, drvName, dbg_end and dbg_prt need special handling !
2971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds*/
2981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DBG_EXT_TYPE_CARD_TRACE     0x00000001
2991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct
3001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{
3011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    unsigned long       ExtendedType;
3021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    union
3031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    {
3041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        /* DBG_EXT_TYPE_CARD_TRACE */
3051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        struct
3061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        {
3071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds            void ( * MaskChangedNotify) (void *pContext);
3081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds            unsigned long   ModuleTxtMask;
3091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds            unsigned long   DebugLevel;
3101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds            unsigned long   B_ChannelMask;
3111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds            unsigned long   LogBufferSize;
3121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        } CardTrace;
3131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    }Data;
3141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} _DbgExtendedInfo_;
3151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef DIVA_NO_DEBUGLIB
3161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* -------------------------------------------------------------
3171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    Function used for xlog-style debug
3181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds   ------------------------------------------------------------- */
3191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define XDI_USE_XLOG 1
3201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid  xdi_dbg_xlog (char* x, ...);
3211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* DIVA_NO_DEBUGLIB */
3221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* __DEBUGLIB_H__ */
323