1*a9a4552aSMasahiro Yamada #ifndef __KERNEL_PRINTK__ 2*a9a4552aSMasahiro Yamada #define __KERNEL_PRINTK__ 3*a9a4552aSMasahiro Yamada 4*a9a4552aSMasahiro Yamada #include <stdio.h> 5*a9a4552aSMasahiro Yamada #include <linux/compiler.h> 6*a9a4552aSMasahiro Yamada 7*a9a4552aSMasahiro Yamada #define KERN_EMERG 8*a9a4552aSMasahiro Yamada #define KERN_ALERT 9*a9a4552aSMasahiro Yamada #define KERN_CRIT 10*a9a4552aSMasahiro Yamada #define KERN_ERR 11*a9a4552aSMasahiro Yamada #define KERN_WARNING 12*a9a4552aSMasahiro Yamada #define KERN_NOTICE 13*a9a4552aSMasahiro Yamada #define KERN_INFO 14*a9a4552aSMasahiro Yamada #define KERN_DEBUG 15*a9a4552aSMasahiro Yamada #define KERN_CONT 16*a9a4552aSMasahiro Yamada 17*a9a4552aSMasahiro Yamada #define printk(fmt, ...) \ 18*a9a4552aSMasahiro Yamada printf(fmt, ##__VA_ARGS__) 19*a9a4552aSMasahiro Yamada 20*a9a4552aSMasahiro Yamada /* 21*a9a4552aSMasahiro Yamada * Dummy printk for disabled debugging statements to use whilst maintaining 22*a9a4552aSMasahiro Yamada * gcc's format checking. 23*a9a4552aSMasahiro Yamada */ 24*a9a4552aSMasahiro Yamada #define no_printk(fmt, ...) \ 25*a9a4552aSMasahiro Yamada ({ \ 26*a9a4552aSMasahiro Yamada if (0) \ 27*a9a4552aSMasahiro Yamada printk(fmt, ##__VA_ARGS__); \ 28*a9a4552aSMasahiro Yamada 0; \ 29*a9a4552aSMasahiro Yamada }) 30*a9a4552aSMasahiro Yamada 31*a9a4552aSMasahiro Yamada #define __printk(level, fmt, ...) \ 32*a9a4552aSMasahiro Yamada ({ \ 33*a9a4552aSMasahiro Yamada level < CONFIG_LOGLEVEL ? printk(fmt, ##__VA_ARGS__) : 0; \ 34*a9a4552aSMasahiro Yamada }) 35*a9a4552aSMasahiro Yamada 36*a9a4552aSMasahiro Yamada #ifndef pr_fmt 37*a9a4552aSMasahiro Yamada #define pr_fmt(fmt) fmt 38*a9a4552aSMasahiro Yamada #endif 39*a9a4552aSMasahiro Yamada 40*a9a4552aSMasahiro Yamada #define pr_emerg(fmt, ...) \ 41*a9a4552aSMasahiro Yamada __printk(0, pr_fmt(fmt), ##__VA_ARGS__) 42*a9a4552aSMasahiro Yamada #define pr_alert(fmt, ...) \ 43*a9a4552aSMasahiro Yamada __printk(1, pr_fmt(fmt), ##__VA_ARGS__) 44*a9a4552aSMasahiro Yamada #define pr_crit(fmt, ...) \ 45*a9a4552aSMasahiro Yamada __printk(2, pr_fmt(fmt), ##__VA_ARGS__) 46*a9a4552aSMasahiro Yamada #define pr_err(fmt, ...) \ 47*a9a4552aSMasahiro Yamada __printk(3, pr_fmt(fmt), ##__VA_ARGS__) 48*a9a4552aSMasahiro Yamada #define pr_warning(fmt, ...) \ 49*a9a4552aSMasahiro Yamada __printk(4, pr_fmt(fmt), ##__VA_ARGS__) 50*a9a4552aSMasahiro Yamada #define pr_warn pr_warning 51*a9a4552aSMasahiro Yamada #define pr_notice(fmt, ...) \ 52*a9a4552aSMasahiro Yamada __printk(5, pr_fmt(fmt), ##__VA_ARGS__) 53*a9a4552aSMasahiro Yamada #define pr_info(fmt, ...) \ 54*a9a4552aSMasahiro Yamada __printk(6, pr_fmt(fmt), ##__VA_ARGS__) 55*a9a4552aSMasahiro Yamada 56*a9a4552aSMasahiro Yamada #define pr_cont(fmt, ...) \ 57*a9a4552aSMasahiro Yamada printk(fmt, ##__VA_ARGS__) 58*a9a4552aSMasahiro Yamada 59*a9a4552aSMasahiro Yamada /* pr_devel() should produce zero code unless DEBUG is defined */ 60*a9a4552aSMasahiro Yamada #ifdef DEBUG 61*a9a4552aSMasahiro Yamada #define pr_devel(fmt, ...) \ 62*a9a4552aSMasahiro Yamada __printk(7, pr_fmt(fmt), ##__VA_ARGS__) 63*a9a4552aSMasahiro Yamada #else 64*a9a4552aSMasahiro Yamada #define pr_devel(fmt, ...) \ 65*a9a4552aSMasahiro Yamada no_printk(pr_fmt(fmt), ##__VA_ARGS__) 66*a9a4552aSMasahiro Yamada #endif 67*a9a4552aSMasahiro Yamada 68*a9a4552aSMasahiro Yamada #ifdef DEBUG 69*a9a4552aSMasahiro Yamada #define pr_debug(fmt, ...) \ 70*a9a4552aSMasahiro Yamada __printk(7, pr_fmt(fmt), ##__VA_ARGS__) 71*a9a4552aSMasahiro Yamada #else 72*a9a4552aSMasahiro Yamada #define pr_debug(fmt, ...) \ 73*a9a4552aSMasahiro Yamada no_printk(pr_fmt(fmt), ##__VA_ARGS__) 74*a9a4552aSMasahiro Yamada #endif 75*a9a4552aSMasahiro Yamada 76*a9a4552aSMasahiro Yamada #define printk_once(fmt, ...) \ 77*a9a4552aSMasahiro Yamada printk(fmt, ##__VA_ARGS__) 78*a9a4552aSMasahiro Yamada 79*a9a4552aSMasahiro Yamada #endif 80