+#define RT_PRINT_DATA(rtlpriv, _comp, _level, _titlestring, _hexdata,
\
+ _hexdatalen) \
+do { \
+ if (unlikely(((_comp) & rtlpriv->dbg.global_debugcomponents) &&
\
+ (_level <= rtlpriv->dbg.global_debuglevel))) {
\
+ printk(KERN_DEBUG "%s: ", KBUILD_MODNAME); \
+ pr_cont("In process \"%s\" (pid %i):", \
+ current->comm, current->pid); \
+ printk(_titlestring); \
+ print_hex_dump_bytes("", DUMP_PREFIX_NONE, \
+ _hexdata, _hexdatalen);
\
+ }
\
+} while (0)
From my experiences you need to use:
if (unlikely(a) && b)
not:
if (unlikely(a && b))
to get the expected static branch prediction.
Also, only the initial test need be in the #define,
the printfs (etc) can be moved into a real function.
This would reduce the code size (if used more than once).
David