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