1 /*******************************************************************
2 uLan Communication - uL_DRV - multiplatform uLan driver
4 ul_debug.c - common debugging routines
6 (C) Copyright 1996-2004 by Pavel Pisa - project originator
7 http://cmp.felk.cvut.cz/~pisa
8 (C) Copyright 1996-2004 PiKRON Ltd.
10 (C) Copyright 2002-2004 Petr Smolik
13 The uLan driver project can be used and distributed
14 in compliance with any of next licenses
15 - GPL - GNU Public License
16 See file COPYING for details.
17 - LGPL - Lesser GNU Public License
18 - MPL - Mozilla Public License
19 - and other licenses added by project originator
21 Code can be modified and re-distributed under any combination
22 of the above listed licenses. If contributor does not agree with
23 some of the licenses, he/she can delete appropriate line.
24 WARNING: if you delete all lines, you are not allowed to
25 distribute code or sources in any form.
26 *******************************************************************/
28 void printblk(ul_mem_blk *blk)
30 ul_mem_blk *prev_blk=NULL;
33 if(prev_blk) if(UL_BLK_HEAD(blk).prev!=prev_blk)
34 UL_PRINTF(KERN_CRIT "Inconsistency in BLL list !!!\n");
36 UL_PRINTF("BLK : dadr=%02X sadr=%02X cmd=%02X flg=%04X retry=%02X len=%04X\n",
37 UL_BLK_HEAD(blk).dadr,
38 UL_BLK_HEAD(blk).sadr,
41 UL_BLK_HEAD(blk).retry_cnt,
50 di.trans_len=UL_BLK_HEAD(blk).len;
51 while((di.pos<di.trans_len)&& --cnt)
54 if(ch>=0x20&&ch<0x7F) UL_PRINTF("%c",ch);
55 else UL_PRINTF("<%X>",ch);
57 if(!cnt) UL_PRINTF("<...>...");
61 blk=UL_BLK_HEAD(blk).next;
65 void printudrvbll(ul_drv *udrv)
67 UL_PRINTF("\nprep_bll : frames = %d\n",udrv->prep_bll.cnt);
68 printblk(udrv->prep_bll.first);
70 UL_PRINTF("\nwork_bll : frames = %d\n",udrv->work_bll.cnt);
71 printblk(udrv->work_bll.first);
73 UL_PRINTF("\nproc_bll : frames = %d\n",udrv->proc_bll.cnt);
74 printblk(udrv->proc_bll.first);
75 UL_PRINTF("\nopan_bll : frames = %d\n",udrv->opan_bll.cnt);
76 printblk(udrv->opan_bll.first);
77 UL_PRINTF("\nfree_blk = %d",udrv->free_blk_cnt);
79 #ifdef ENABLE_UL_MEM_CHECK
80 UL_PRINTF("MEM_CHECK: malloc-free=%d\n",
81 (int)atomic_read(&ul_mem_check_counter));
82 #endif /* ENABLE_UL_MEM_CHECK */
85 void printudrvoperators(ul_drv *udrv)
89 ul_opchain *opmember,**opchain;
90 int reccnt,filtcnt,opcnt;
91 UL_PRINTF("\nul_drv operators (open handles)\n");
94 for(opdata=udrv->operators;opdata;opdata=opdata->opnext)
95 { opchain=&opdata->recchain;reccnt=0;
96 if((opmember=*opchain)!=NULL)do{
97 reccnt++; if(reccnt>1000) break;
98 }while((opmember=opmember->next)!=*opchain);
99 opchain=&opdata->filtchain;filtcnt=0;
100 if((opmember=*opchain)!=NULL)do{
101 filtcnt++; if(filtcnt>1000) break;
102 }while((opmember=opmember->next)!=*opchain);
103 UL_PRINTF(" operator %d, in recchain %d, in filtchain %d\n",
104 opcnt,reccnt,filtcnt);
105 opcnt++;if(opcnt>100) break;
110 void printudrvfncstack(ul_drv *udrv)
113 UL_PRINTF("ul_drv: fnc_act:%08lx fnc_stack:",(long)udrv->fnc_act);
115 while(p!=&udrv->fnc_stack[0]){
117 UL_PRINTF("%08lx ",(long)*p);