bcm: Replace the BCM_DEBUG_* and BCM_SHOW_* macros with functions
PATCH v3 1/1 bcm: Replace the BCM_DEBUG_* and BCM_SHOW_* macros with functions
This patch is made by following the improvements told by Joe Perches, replaced the BCM_DEBUG* and BCM_SHOW* macros into functions and added them in a file and added macros in the Debug.h file. This patch also improves the if check in bcm_show_debug_bitmap,
the check was
if ((i == 1) || (i == 2) || (i == 4) || (i == 8));
and used is_power_of_two instead as suggested by Eric Dumazet.
--- drivers/staging/bcm/Debug.c | 55 +++++++++++++++++++++++++++++++++++++ drivers/staging/bcm/Debug.h | 62 ++++++++++++++---------------------------- drivers/staging/bcm/Makefile | 2 +- 3 files changed, 77 insertions(+), 42 deletions(-) create mode 100644 drivers/staging/bcm/Debug.c
drivers/staging/bcm/Debug.c new file +55 -0
@@ -0,0 +1,55 @@ +#include <linux/log2.h> +#include "headers.h" + +void bcm_debug_print (PMINI_ADAPTER Adapter,int Type,int SubType, +int dbg_level,const char *fmt, ...) +{ +struct va_format vaf; +va_list args; +UINT debug_level = Adapter->stDebugState.debug_level; + +va_start (args, fmt); + + vaf.fmt = fmt; + vaf.va = &args; + +if (DBG_TYPE_PRINTK == Type) +pr_info ("%s: %pV" , __func__, &vaf); +else if (Adapter && + (dbg_level &DBG_LVL_BITMASK ) <= debug_level && + (Type & Adapter->stDebugState.type) && + (SubType & Adapter->stDebugState.subtype[Type])) { +if (dbg_level &DBG_NO_FUNC_PRINT ) +printk (KERN_DEBUG "%pV" , &vaf); +else +printk (KERN_DEBUG "%s: %pV" , __func__, &vaf); + } + +va_end (args); +} + +void bcm_debug_print_buffer (PMINI_ADAPTER Adapter,int Type,int SubType, +int dbg_level,const void *buffer,size_t bufferlen) +{ +if (DBG_TYPE_PRINTK == Type || + (Adapter && + (dbg_level &DBG_LVL_BITMASK ) <= Adapter->stDebugState.debug_level && + (Type & Adapter->stDebugState.type) && + (SubType & Adapter->stDebugState.subtype[Type]))) { +printk (KERN_DEBUG "%s:\n" , __func__); +print_hex_dump (KERN_DEBUG ," " ,DUMP_PREFIX_OFFSET , +16 ,1 , buffer, bufferlen, false); + } +} + +void bcm_show_debug_bitmap (PMINI_ADAPTER Adapter) +{ +int i; +for (i =0 ; i < (NUMTYPES *2 ) +1 ; i++) { +if (is_power_of_2 (i)) { +BCM_DEBUG_PRINT (Adapter,DBG_TYPE_PRINTK ,0 ,0 , +"subtype[%d] = 0x%08x\n" , + i, Adapter->stDebugState.subtype[i]); + } + } +}
drivers/staging/bcm/Debug.h +21 -41
78 lines not on this page · raw message
drivers/staging/bcm/Makefile +1 -1
@@ -7,6 +7,6 @@ obj-$(CONFIG_BCM_WIMAX) += bcm_wimax.o bcm_wimax-y := InterfaceDld.o InterfaceIdleMode.o InterfaceInit.o InterfaceRx.o \ InterfaceIsr.o InterfaceMisc.o InterfaceTx.o \ CmHost.o IPv6Protocol.o Qos.o Transmit.o\ - Bcmnet.o DDRInit.o HandleControlPacket.o\ + Debug.o Bcmnet.o DDRInit.o HandleControlPacket.o\ LeakyBucket.o Misc.o sort.o Bcmchar.o hostmibs.o PHSModule.o\ led_control.o nvm.o vendorspecificextn.o
Signature · 1 line
1.7.9.5
On Tue, 2012-05-29 at 16:37 +0530, Devendra Naga wrote:
[]
drivers/staging/bcm/Debug.c
Quoted 1 line
drivers/staging/bcm/Debug.c +0
-0
[]
Quoted 4 lines
drivers/staging/bcm/Debug.c +4
-0+void bcm_debug_print (PMINI_ADAPTER Adapter,int Type,int SubType, +int dbg_level,const char *fmt, ...) +{ +struct va_format vaf;
drivers/staging/bcm/Debug.c line 17
Quoted 10 lines
drivers/staging/bcm/Debug.c +10
-0+va_list args; +UINT debug_level = Adapter->stDebugState.debug_level; + +va_start (args, fmt); + + vaf.fmt = fmt; + vaf.va = &args; + +if (DBG_TYPE_PRINTK == Type) +pr_info ("%s: %pV" , __func__, &vaf);
func
drivers/staging/bcm/Debug.c line 25
Quoted 8 lines
drivers/staging/bcm/Debug.c +8
-0+else if (Adapter && + (dbg_level &DBG_LVL_BITMASK ) <= debug_level && + (Type & Adapter->stDebugState.type) && + (SubType & Adapter->stDebugState.subtype[Type])) { +if (dbg_level &DBG_NO_FUNC_PRINT ) +printk (KERN_DEBUG "%pV" , &vaf); +else +printk (KERN_DEBUG "%s: %pV" , __func__, &vaf);
func
Quoted 4 lines
drivers/staging/bcm/Debug.c +4
-0+ } + +va_end (args); +}
drivers/staging/bcm/Debug.c line 39
Quoted 10 lines
drivers/staging/bcm/Debug.c +10
-0+ +void bcm_debug_print_buffer (PMINI_ADAPTER Adapter,int Type,int SubType, +int dbg_level,const void *buffer,size_t bufferlen) +{ +if (DBG_TYPE_PRINTK == Type || + (Adapter && + (dbg_level &DBG_LVL_BITMASK ) <= Adapter->stDebugState.debug_level && + (Type & Adapter->stDebugState.type) && + (SubType & Adapter->stDebugState.subtype[Type]))) { +printk (KERN_DEBUG "%s:\n" , __func__);
func
drivers/staging/bcm/Debug.c line 43
Quoted 4 lines
drivers/staging/bcm/Debug.c +4
-0+print_hex_dump (KERN_DEBUG ," " ,DUMP_PREFIX_OFFSET , +16 ,1 , buffer, bufferlen, false); + } +}
[]
drivers/staging/bcm/Debug.h
Quoted 1 line
drivers/staging/bcm/Debug.h +0
-0
[]
drivers/staging/bcm/Debug.h typedef struct _S_BCM_DEBUG_STATE { · line 223
Quoted 6 lines
drivers/staging/bcm/Debug.h +6
-0+struct _MINI_ADAPTER ; + +__printf(5, 6) + +void bcm_debug_print (struct _MINI_ADAPTER *Adapter,int Type,int SubType, +int dbg_level,const char *fmt, ...);
No blank line between __printf and prototype
drivers/staging/bcm/Debug.h typedef struct _S_BCM_DEBUG_STATE { · line 236
Quoted 13 lines
drivers/staging/bcm/Debug.h +13
-0+void bcm_debug_print_buffer (struct _MINI_ADAPTER *Adapter,int Type,int SubType, +int dbg_level,const void *buffer,size_t bufferlen); +void bcm_show_debug_bitmap (struct _MINI_ADAPTER *Adapter); + +#define BCM_DEBUG_PRINT (Adapter, Type, SubType, dbg_level, fmt, ...) \ + bcm_debug_print(Adapter, Type, SubType, dbg_level, fmt, ##__VA_ARGS__) + +#define BCM_DEBUG_PRINT_BUFFER (Adapter, Type, SubType, dbg_level, \ + buffer, bufferlen) \ + bcm_debug_print_buffer(Adapter, Type, SubType, dbg_level, \ + buffer, bufferlen) +#define BCM_SHOW_DEBUG_BITMAP (Adapter) \ + bcm_show_debug_bitmap(Adapter)
Turns out to keep the same behavior, you need to add a const char *func argument to these functions and change the macros to pass __func__.
Hi Joe,
Quoted 74 lines · Joe Perches
drivers/staging/bcm/Debug.c
Quoted 1 line
drivers/staging/bcm/Debug.c +0
-0[]
Quoted 4 lines
drivers/staging/bcm/Debug.c +4
-0+void bcm_debug_print (PMINI_ADAPTER Adapter,int Type,int SubType, + int dbg_level, const char *fmt, ...) +{ + struct va_format vaf;drivers/staging/bcm/Debug.c line 17
Quoted 10 lines
drivers/staging/bcm/Debug.c +10
-0+ va_list args; + UINT debug_level = Adapter->stDebugState.debug_level; + + va_start(args, fmt); + + vaf.fmt = fmt; + vaf.va = &args; + + if (DBG_TYPE_PRINTK == Type) + pr_info("%s: %pV", __func__, &vaf);func
Quoted 8 lines
+ else if (Adapter &&
+ (dbg_level&DBG_LVL_BITMASK) <=debug_level&&
+ (Type &Adapter->stDebugState.type) &&
+ (SubType & Adapter->stDebugState.subtype[Type])) {
+ if (dbg_level&DBG_NO_FUNC_PRINT)
+printk(KERN_DEBUG "%pV" , &vaf);
+ else
+printk(KERN_DEBUG "%s: %pV", __func__, &vaf);func
Quoted 4 lines
+ }
drivers/staging/bcm/Debug.c +3
-0+ + va_end(args); +}drivers/staging/bcm/Debug.c line 39
Quoted 10 lines
drivers/staging/bcm/Debug.c +10
-0+ +void bcm_debug_print_buffer (PMINI_ADAPTER Adapter,int Type,int SubType, + int dbg_level, const void *buffer, size_t bufferlen) +{ + if (DBG_TYPE_PRINTK == Type || + (Adapter && + (dbg_level & DBG_LVL_BITMASK) <= Adapter->stDebugState.debug_level && + (Type & Adapter->stDebugState.type) && + (SubType & Adapter->stDebugState.subtype[Type]))) { + printk(KERN_DEBUG "%s:\n", __func__);func
Quoted 4 lines
+ print_hex_dump(KERN_DEBUG, " ",
DUMP_PREFIX_OFFSET,
+ 16, 1, buffer, bufferlen, false);
+ }
+}[]
drivers/staging/bcm/Debug.h
Quoted 1 line
drivers/staging/bcm/Debug.h +0
-0[]
drivers/staging/bcm/Debug.h typedef struct _S_BCM_DEBUG_STATE { · line 223
Quoted 6 lines
drivers/staging/bcm/Debug.h +6
-0+struct _MINI_ADAPTER ; + +__printf(5, 6) + +void bcm_debug_print (struct _MINI_ADAPTER *Adapter,int Type,int SubType, + int dbg_level, const char *fmt, ...);No blank line between
__printfand prototypeQuoted 9 lines
drivers/staging/bcm/Debug.h +9
-0+void bcm_debug_print_buffer (struct _MINI_ADAPTER *Adapter,int Type,int SubType, + int dbg_level, const void *buffer, size_t bufferlen); +void bcm_show_debug_bitmap (struct _MINI_ADAPTER *Adapter); + +#define BCM_DEBUG_PRINT (Adapter, Type, SubType, dbg_level, fmt, ...) \ + bcm_debug_print(Adapter, Type, SubType, dbg_level, fmt, ##__VA_ARGS__) + +#define BCM_DEBUG_PRINT_BUFFER(Adapter, Type, SubType, dbg_level, \ + buffer, bufferlen) \
Quoted 11 lines
Quoted 4 lines
+ bcm_debug_print_buffer(Adapter, Type, SubType,
dbg_level, \
+ buffer, bufferlen)
+#defineBCM_SHOW_DEBUG_BITMAP(Adapter)\
+bcm_show_debug_bitmap(Adapter)Turns out to keep the same behavior, you need to add a const char *func argument to these functions and change the macros to pass
__func__.
Ok. so what i am doing now is wrong as its a function, and __func__ gives the dbg function name, instead the called function since we changed it to functions rather from Macros.
Ok, i will send out new changes.
Thanks,
Devendra.