fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / include / linux / vserver / 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 #define vxd_path(d,m)                                           \
23         ({ static char _buffer[PATH_MAX];                       \
24            d_path((d), (m), _buffer, sizeof(_buffer)); })
25
26 #define vxd_cond_path(n)                                        \
27         ((n) ? vxd_path((n)->dentry, (n)->mnt) : "<null>" )
28
29
30 #ifdef  CONFIG_VSERVER_DEBUG
31
32 extern unsigned int vx_debug_switch;
33 extern unsigned int vx_debug_xid;
34 extern unsigned int vx_debug_nid;
35 extern unsigned int vx_debug_tag;
36 extern unsigned int vx_debug_net;
37 extern unsigned int vx_debug_limit;
38 extern unsigned int vx_debug_cres;
39 extern unsigned int vx_debug_dlim;
40 extern unsigned int vx_debug_quota;
41 extern unsigned int vx_debug_cvirt;
42 extern unsigned int vx_debug_misc;
43
44
45 #define VX_LOGLEVEL     "vxD: "
46
47 #define vxdprintk(c,f,x...)                                     \
48         do {                                                    \
49                 if (c)                                          \
50                         printk(VX_LOGLEVEL f "\n" , ##x);       \
51         } while (0)
52
53 #define vxlprintk(c,f,x...)                                     \
54         do {                                                    \
55                 if (c)                                          \
56                         printk(VX_LOGLEVEL f " @%s:%d\n", x);   \
57         } while (0)
58
59 #define vxfprintk(c,f,x...)                                     \
60         do {                                                    \
61                 if (c)                                          \
62                         printk(VX_LOGLEVEL f " %s@%s:%d\n", x); \
63         } while (0)
64
65
66 struct vx_info;
67
68 void dump_vx_info(struct vx_info *, int);
69 void dump_vx_info_inactive(int);
70
71 #else   /* CONFIG_VSERVER_DEBUG */
72
73 #define vx_debug_switch 0
74 #define vx_debug_xid    0
75 #define vx_debug_nid    0
76 #define vx_debug_tag    0
77 #define vx_debug_net    0
78 #define vx_debug_limit  0
79 #define vx_debug_cres   0
80 #define vx_debug_dlim   0
81 #define vx_debug_cvirt  0
82
83 #define vxdprintk(x...) do { } while (0)
84 #define vxlprintk(x...) do { } while (0)
85 #define vxfprintk(x...) do { } while (0)
86
87 #endif  /* CONFIG_VSERVER_DEBUG */
88
89
90 #ifdef  CONFIG_VSERVER_WARN
91
92 #define VX_WARNLEVEL    KERN_WARNING "vxW: "
93
94 #define vxwprintk(c,f,x...)                                     \
95         do {                                                    \
96                 if (c)                                          \
97                         printk(VX_WARNLEVEL f "\n" , ##x);      \
98         } while (0)
99
100 #else   /* CONFIG_VSERVER_WARN */
101
102 #define vxwprintk(x...) do { } while (0)
103
104 #endif  /* CONFIG_VSERVER_WARN */
105
106
107 #ifdef  CONFIG_VSERVER_DEBUG
108 #define vxd_assert_lock(l)      assert_spin_locked(l)
109 #define vxd_assert(c,f,x...)    vxlprintk(!(c), \
110         "assertion [" f "] failed.", ##x, __FILE__, __LINE__)
111 #else
112 #define vxd_assert_lock(l)      do { } while (0)
113 #define vxd_assert(c,f,x...)    do { } while (0)
114 #endif
115
116
117 #endif /* _VX_DEBUG_H */