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