cregit-Linux how code gets into the kernel

Release 4.14 drivers/isdn/hardware/eicon/debuglib.c

/*
 *
 Copyright (c) Eicon Networks, 2002.
 *
 This source file is supplied for the use with
 Eicon Networks range of DIVA Server Adapters.
 *
 Eicon File Revision :    2.1
 *
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2, or (at your option)
 any later version.
 *
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY OF ANY KIND WHATSOEVER INCLUDING ANY
 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 See the GNU General Public License for more details.
 *
 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 */

#include "debuglib.h"

#ifdef DIVA_NO_DEBUGLIB

static DIVA_DI_PRINTF dprintf;
#else /* DIVA_NO_DEBUGLIB */


_DbgHandle_ myDriverDebugHandle = { 0 /*!Registered*/, DBG_HANDLE_VERSION };

DIVA_DI_PRINTF dprintf = no_printf;
/*****************************************************************************/

#define DBG_FUNC(name)							\
	void                                                            \
        myDbgPrint_##name(char *format, ...)                            \
        { va_list ap;                                                   \
                if (myDriverDebugHandle.dbg_prt)                        \
                { va_start(ap, format);                         \
                        (myDriverDebugHandle.dbg_prt)                   \
                                (myDriverDebugHandle.id, DLI_##name, format, ap); \
                        va_end(ap);                                     \
                } }

DBG_FUNC(LOG)
DBG_FUNC(FTL)
DBG_FUNC(ERR)
DBG_FUNC(TRC)
DBG_FUNC(MXLOG)
DBG_FUNC(FTL_MXLOG)

void myDbgPrint_EVL(long msgID, ...) { va_list ap; if (myDriverDebugHandle.dbg_ev) { va_start(ap, msgID); (myDriverDebugHandle.dbg_ev) (myDriverDebugHandle.id, (unsigned long)msgID, ap); va_end(ap); } }

Contributors

PersonTokensPropCommitsCommitProp
Armin Schindler52100.00%1100.00%
Total52100.00%1100.00%

DBG_FUNC(REG) DBG_FUNC(MEM) DBG_FUNC(SPL) DBG_FUNC(IRP) DBG_FUNC(TIM) DBG_FUNC(BLK) DBG_FUNC(TAPI) DBG_FUNC(NDIS) DBG_FUNC(CONN) DBG_FUNC(STAT) DBG_FUNC(SEND) DBG_FUNC(RECV) DBG_FUNC(PRV0) DBG_FUNC(PRV1) DBG_FUNC(PRV2) DBG_FUNC(PRV3) /*****************************************************************************/
int DbgRegister(char *drvName, char *drvTag, unsigned long dbgMask) { int len; /* * deregister (if already registered) and zero out myDriverDebugHandle */ DbgDeregister(); /* * initialize the debug handle */ myDriverDebugHandle.Version = DBG_HANDLE_VERSION; myDriverDebugHandle.id = -1; myDriverDebugHandle.dbgMask = dbgMask | (DL_EVL | DL_FTL | DL_LOG); len = strlen(drvName); memcpy(myDriverDebugHandle.drvName, drvName, (len < sizeof(myDriverDebugHandle.drvName)) ? len : sizeof(myDriverDebugHandle.drvName) - 1); len = strlen(drvTag); memcpy(myDriverDebugHandle.drvTag, drvTag, (len < sizeof(myDriverDebugHandle.drvTag)) ? len : sizeof(myDriverDebugHandle.drvTag) - 1); /* * Try to register debugging via old (and only) interface */ dprintf("\000\377", &myDriverDebugHandle); if (myDriverDebugHandle.dbg_prt) { return (1); } /* * Check if we registered with an old maint driver (see debuglib.h) */ if (myDriverDebugHandle.dbg_end != NULL /* location of 'dbg_prt' in _OldDbgHandle_ struct */ && (myDriverDebugHandle.regTime.LowPart || myDriverDebugHandle.regTime.HighPart)) /* same location as in _OldDbgHandle_ struct */ { dprintf("%s: Cannot log to old maint driver !", drvName); myDriverDebugHandle.dbg_end = ((_OldDbgHandle_ *)&myDriverDebugHandle)->dbg_end; DbgDeregister(); } return (0); }

Contributors

PersonTokensPropCommitsCommitProp
Armin Schindler20699.52%150.00%
Robert P. J. Day10.48%150.00%
Total207100.00%2100.00%

/*****************************************************************************/
void DbgSetLevel(unsigned long dbgMask) { myDriverDebugHandle.dbgMask = dbgMask | (DL_EVL | DL_FTL | DL_LOG); }

Contributors

PersonTokensPropCommitsCommitProp
Armin Schindler23100.00%1100.00%
Total23100.00%1100.00%

/*****************************************************************************/
void DbgDeregister(void) { if (myDriverDebugHandle.dbg_end) { (myDriverDebugHandle.dbg_end)(&myDriverDebugHandle); } memset(&myDriverDebugHandle, 0, sizeof(myDriverDebugHandle)); }

Contributors

PersonTokensPropCommitsCommitProp
Armin Schindler38100.00%1100.00%
Total38100.00%1100.00%


void xdi_dbg_xlog(char *x, ...) { va_list ap; va_start(ap, x); if (myDriverDebugHandle.dbg_end && (myDriverDebugHandle.dbg_irq || myDriverDebugHandle.dbg_old) && (myDriverDebugHandle.dbgMask & DL_STAT)) { if (myDriverDebugHandle.dbg_irq) { (*(myDriverDebugHandle.dbg_irq))(myDriverDebugHandle.id, (x[0] != 0) ? DLI_TRC : DLI_XLOG, x, ap); } else { (*(myDriverDebugHandle.dbg_old))(myDriverDebugHandle.id, x, ap); } } va_end(ap); }

Contributors

PersonTokensPropCommitsCommitProp
Armin Schindler112100.00%1100.00%
Total112100.00%1100.00%

/*****************************************************************************/ #endif /* DIVA_NO_DEBUGLIB */

Overall Contributors

PersonTokensPropCommitsCommitProp
Armin Schindler56299.47%250.00%
Joe Perches20.35%125.00%
Robert P. J. Day10.18%125.00%
Total565100.00%4100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.