Add cwd to the list of paths to exclude from namespace cleanup.
[util-vserver.git] / kernel / debug.h
1 #ifndef _VX_DEBUG_H
2 #define _VX_DEBUG_H
3
4
5 #define VXD_CBIT(n,m)   (vx_debug_ ## n & (1 << (m)))
6 #define VXD_CMIN(n,m)   (vx_debug_ ## n > (m))
7 #define VXD_MASK(n,m)   (vx_debug_ ## n & (m))
8
9 #define VXD_QPOS(v,p)   (((uint32_t)(v) >> ((p)*8)) & 0xFF)
10 #define VXD_QUAD(v)     VXD_QPOS(v,0), VXD_QPOS(v,1),           \
11                         VXD_QPOS(v,2), VXD_QPOS(v,3)
12 #define VXF_QUAD        "%u.%u.%u.%u"
13
14 #define VXD_DEV(d)      (d), (d)->bd_inode->i_ino,              \
15                         imajor((d)->bd_inode), iminor((d)->bd_inode)
16 #define VXF_DEV         "%p[%lu,%d:%d]"
17
18
19 #define __FUNC__        __func__
20
21
22 #ifdef  CONFIG_VSERVER_DEBUG
23
24 extern unsigned int vx_debug_switch;
25 extern unsigned int vx_debug_xid;
26 extern unsigned int vx_debug_nid;
27 extern unsigned int vx_debug_tag;
28 extern unsigned int vx_debug_net;
29 extern unsigned int vx_debug_limit;
30 extern unsigned int vx_debug_cres;
31 extern unsigned int vx_debug_dlim;
32 extern unsigned int vx_debug_quota;
33 extern unsigned int vx_debug_cvirt;
34 extern unsigned int vx_debug_misc;
35
36
37 #define VX_LOGLEVEL     "vxD: "
38 #define VX_WARNLEVEL    KERN_WARNING "vxW: "
39
40 #define vxdprintk(c,f,x...)                                     \
41         do {                                                    \
42                 if (c)                                          \
43                         printk(VX_LOGLEVEL f "\n" , ##x);       \
44         } while (0)
45
46 #define vxlprintk(c,f,x...)                                     \
47         do {                                                    \
48                 if (c)                                          \
49                         printk(VX_LOGLEVEL f " @%s:%d\n", x);   \
50         } while (0)
51
52 #define vxfprintk(c,f,x...)                                     \
53         do {                                                    \
54                 if (c)                                          \
55                         printk(VX_LOGLEVEL f " %s@%s:%d\n", x); \
56         } while (0)
57
58
59 #define vxwprintk(c,f,x...)                                     \
60         do {                                                    \
61                 if (c)                                          \
62                         printk(VX_WARNLEVEL f "\n" , ##x);      \
63         } while (0)
64
65
66 #define vxd_path(d,m)                                           \
67         ({ static char _buffer[PATH_MAX];                       \
68            d_path((d), (m), _buffer, sizeof(_buffer)); })
69
70 #define vxd_cond_path(n)                                        \
71         ((n) ? vxd_path((n)->dentry, (n)->mnt) : "<null>" )
72
73
74 struct vx_info;
75
76 void dump_vx_info(struct vx_info *, int);
77 void dump_vx_info_inactive(int);
78
79 #else   /* CONFIG_VSERVER_DEBUG */
80
81 #define vx_debug_switch 0
82 #define vx_debug_xid    0
83 #define vx_debug_nid    0
84 #define vx_debug_tag    0
85 #define vx_debug_net    0
86 #define vx_debug_limit  0
87 #define vx_debug_cres   0
88 #define vx_debug_dlim   0
89 #define vx_debug_cvirt  0
90
91 #define vxdprintk(x...) do { } while (0)
92 #define vxlprintk(x...) do { } while (0)
93 #define vxfprintk(x...) do { } while (0)
94 #define vxwprintk(x...) do { } while (0)
95
96 #define vxd_path        "<none>"
97 #define vxd_cond_path   vxd_path
98
99 #endif  /* CONFIG_VSERVER_DEBUG */
100
101
102 #ifdef  CONFIG_VSERVER_DEBUG
103 #define vxd_assert_lock(l)      assert_spin_locked(l)
104 #define vxd_assert(c,f,x...)    vxlprintk(!(c), \
105         "assertion [" f "] failed.", ##x, __FILE__, __LINE__)
106 #else
107 #define vxd_assert_lock(l)      do { } while (0)
108 #define vxd_assert(c,f,x...)    do { } while (0)
109 #endif
110
111
112 #endif /* _VX_DEBUG_H */