diff options
Diffstat (limited to 'drivers/s390/net/netiucv.c')
-rw-r--r-- | drivers/s390/net/netiucv.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/drivers/s390/net/netiucv.c b/drivers/s390/net/netiucv.c index 42d701b5921c..874a19994489 100644 --- a/drivers/s390/net/netiucv.c +++ b/drivers/s390/net/netiucv.c | |||
@@ -97,12 +97,22 @@ MODULE_DESCRIPTION ("Linux for S/390 IUCV network driver"); | |||
97 | 97 | ||
98 | DECLARE_PER_CPU(char[256], iucv_dbf_txt_buf); | 98 | DECLARE_PER_CPU(char[256], iucv_dbf_txt_buf); |
99 | 99 | ||
100 | #define IUCV_DBF_TEXT_(name,level,text...) \ | 100 | /* Allow to sort out low debug levels early to avoid wasted sprints */ |
101 | do { \ | 101 | static inline int iucv_dbf_passes(debug_info_t *dbf_grp, int level) |
102 | char* iucv_dbf_txt_buf = get_cpu_var(iucv_dbf_txt_buf); \ | 102 | { |
103 | sprintf(iucv_dbf_txt_buf, text); \ | 103 | return (level <= dbf_grp->level); |
104 | debug_text_event(iucv_dbf_##name,level,iucv_dbf_txt_buf); \ | 104 | } |
105 | put_cpu_var(iucv_dbf_txt_buf); \ | 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 | } while (0) | 116 | } while (0) |
107 | 117 | ||
108 | #define IUCV_DBF_SPRINTF(name,level,text...) \ | 118 | #define IUCV_DBF_SPRINTF(name,level,text...) \ |