Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

claw/lcs/netiucv: check s390dbf level before sprints

additional check of s390dbf level results in better performance
if the default low debugging level is active.

Signed-off-by: Peter Tiedemann <ptiedem@de.ibm.com>
Signed-off-by: Ursula Braun <braunu@de.ibm.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>

authored by

Peter Tiedemann and committed by
Jeff Garzik
f33780d3 164b0fb1

+41 -14
+13 -4
drivers/s390/net/claw.h
··· 114 114 debug_event(claw_dbf_##name,level,(void*)(addr),len); \ 115 115 } while (0) 116 116 117 + /* Allow to sort out low debug levels early to avoid wasted sprints */ 118 + static inline int claw_dbf_passes(debug_info_t *dbf_grp, int level) 119 + { 120 + return (level <= dbf_grp->level); 121 + } 122 + 117 123 #define CLAW_DBF_TEXT_(level,name,text...) \ 118 - do { \ 119 - sprintf(debug_buffer, text); \ 120 - debug_text_event(claw_dbf_##name,level, debug_buffer);\ 121 - } while (0) 124 + do { \ 125 + if (claw_dbf_passes(claw_dbf_##name, level)) { \ 126 + sprintf(debug_buffer, text); \ 127 + debug_text_event(claw_dbf_##name, level, \ 128 + debug_buffer); \ 129 + } \ 130 + } while (0) 122 131 123 132 /******************************************************* 124 133 * Define Control Blocks *
+12 -4
drivers/s390/net/lcs.h
··· 16 16 debug_event(lcs_dbf_##name,level,(void*)(addr),len); \ 17 17 } while (0) 18 18 19 + /* Allow to sort out low debug levels early to avoid wasted sprints */ 20 + static inline int lcs_dbf_passes(debug_info_t *dbf_grp, int level) 21 + { 22 + return (level <= dbf_grp->level); 23 + } 24 + 19 25 #define LCS_DBF_TEXT_(level,name,text...) \ 20 - do { \ 21 - sprintf(debug_buffer, text); \ 22 - debug_text_event(lcs_dbf_##name,level, debug_buffer);\ 23 - } while (0) 26 + do { \ 27 + if (lcs_dbf_passes(lcs_dbf_##name, level)) { \ 28 + sprintf(debug_buffer, text); \ 29 + debug_text_event(lcs_dbf_##name, level, debug_buffer); \ 30 + } \ 31 + } while (0) 24 32 25 33 /** 26 34 * sysfs related stuff
+16 -6
drivers/s390/net/netiucv.c
··· 97 97 98 98 DECLARE_PER_CPU(char[256], iucv_dbf_txt_buf); 99 99 100 - #define IUCV_DBF_TEXT_(name,level,text...) \ 101 - do { \ 102 - char* iucv_dbf_txt_buf = get_cpu_var(iucv_dbf_txt_buf); \ 103 - sprintf(iucv_dbf_txt_buf, text); \ 104 - debug_text_event(iucv_dbf_##name,level,iucv_dbf_txt_buf); \ 105 - put_cpu_var(iucv_dbf_txt_buf); \ 100 + /* Allow to sort out low debug levels early to avoid wasted sprints */ 101 + static inline int iucv_dbf_passes(debug_info_t *dbf_grp, int level) 102 + { 103 + return (level <= dbf_grp->level); 104 + } 105 + 106 + #define IUCV_DBF_TEXT_(name, level, text...) \ 107 + do { \ 108 + if (iucv_dbf_passes(iucv_dbf_##name, level)) { \ 109 + char* iucv_dbf_txt_buf = \ 110 + get_cpu_var(iucv_dbf_txt_buf); \ 111 + sprintf(iucv_dbf_txt_buf, text); \ 112 + debug_text_event(iucv_dbf_##name, level, \ 113 + iucv_dbf_txt_buf); \ 114 + put_cpu_var(iucv_dbf_txt_buf); \ 115 + } \ 106 116 } while (0) 107 117 108 118 #define IUCV_DBF_SPRINTF(name,level,text...) \