This source file includes following definitions.
- batadv_debug_log_setup
- batadv_debug_log_cleanup
- __printf
1
2
3
4
5
6
7 #ifndef _NET_BATMAN_ADV_LOG_H_
8 #define _NET_BATMAN_ADV_LOG_H_
9
10 #include "main.h"
11
12 #include <linux/atomic.h>
13 #include <linux/bitops.h>
14 #include <linux/compiler.h>
15 #include <linux/printk.h>
16
17 #ifdef CONFIG_BATMAN_ADV_DEBUG
18
19 int batadv_debug_log_setup(struct batadv_priv *bat_priv);
20 void batadv_debug_log_cleanup(struct batadv_priv *bat_priv);
21
22 #else
23
24 static inline int batadv_debug_log_setup(struct batadv_priv *bat_priv)
25 {
26 return 0;
27 }
28
29 static inline void batadv_debug_log_cleanup(struct batadv_priv *bat_priv)
30 {
31 }
32
33 #endif
34
35
36
37
38 enum batadv_dbg_level {
39
40 BATADV_DBG_BATMAN = BIT(0),
41
42
43 BATADV_DBG_ROUTES = BIT(1),
44
45
46 BATADV_DBG_TT = BIT(2),
47
48
49 BATADV_DBG_BLA = BIT(3),
50
51
52 BATADV_DBG_DAT = BIT(4),
53
54
55 BATADV_DBG_NC = BIT(5),
56
57
58 BATADV_DBG_MCAST = BIT(6),
59
60
61 BATADV_DBG_TP_METER = BIT(7),
62
63
64 BATADV_DBG_ALL = 255,
65 };
66
67 #ifdef CONFIG_BATMAN_ADV_DEBUG
68 int batadv_debug_log(struct batadv_priv *bat_priv, const char *fmt, ...)
69 __printf(2, 3);
70
71
72
73
74
75
76
77
78
79 #define _batadv_dbg(type, bat_priv, ratelimited, fmt, arg...) \
80 do { \
81 struct batadv_priv *__batpriv = (bat_priv); \
82 if (atomic_read(&__batpriv->log_level) & (type) && \
83 (!(ratelimited) || net_ratelimit())) \
84 batadv_debug_log(__batpriv, fmt, ## arg); \
85 } \
86 while (0)
87 #else
88 __printf(4, 5)
89 static inline void _batadv_dbg(int type __always_unused,
90 struct batadv_priv *bat_priv __always_unused,
91 int ratelimited __always_unused,
92 const char *fmt __always_unused, ...)
93 {
94 }
95 #endif
96
97
98
99
100
101
102
103 #define batadv_dbg(type, bat_priv, arg...) \
104 _batadv_dbg(type, bat_priv, 0, ## arg)
105
106
107
108
109
110
111
112 #define batadv_dbg_ratelimited(type, bat_priv, arg...) \
113 _batadv_dbg(type, bat_priv, 1, ## arg)
114
115
116
117
118
119
120
121 #define batadv_info(net_dev, fmt, arg...) \
122 do { \
123 struct net_device *_netdev = (net_dev); \
124 struct batadv_priv *_batpriv = netdev_priv(_netdev); \
125 batadv_dbg(BATADV_DBG_ALL, _batpriv, fmt, ## arg); \
126 pr_info("%s: " fmt, _netdev->name, ## arg); \
127 } while (0)
128
129
130
131
132
133
134
135 #define batadv_err(net_dev, fmt, arg...) \
136 do { \
137 struct net_device *_netdev = (net_dev); \
138 struct batadv_priv *_batpriv = netdev_priv(_netdev); \
139 batadv_dbg(BATADV_DBG_ALL, _batpriv, fmt, ## arg); \
140 pr_err("%s: " fmt, _netdev->name, ## arg); \
141 } while (0)
142
143 #endif