#define VXD_QPOS(v,p) (((uint32_t)(v) >> ((p)*8)) & 0xFF)
#define VXD_QUAD(v) VXD_QPOS(v,0), VXD_QPOS(v,1), \
VXD_QPOS(v,2), VXD_QPOS(v,3)
+#define VXF_QUAD "%u.%u.%u.%u"
+
+#define VXD_DEV(d) (d), (d)->bd_inode->i_ino, \
+ imajor((d)->bd_inode), iminor((d)->bd_inode)
+#define VXF_DEV "%p[%lu,%d:%d]"
-// #define VXD_HERE __FILE__, __LINE__
#define __FUNC__ __func__
+#define vxd_path(d,m) \
+ ({ static char _buffer[PATH_MAX]; \
+ d_path((d), (m), _buffer, sizeof(_buffer)); })
+
+#define vxd_cond_path(n) \
+ ((n) ? vxd_path((n)->dentry, (n)->mnt) : "<null>" )
+
+
#ifdef CONFIG_VSERVER_DEBUG
extern unsigned int vx_debug_switch;
extern unsigned int vx_debug_xid;
extern unsigned int vx_debug_nid;
+extern unsigned int vx_debug_tag;
extern unsigned int vx_debug_net;
extern unsigned int vx_debug_limit;
+extern unsigned int vx_debug_cres;
extern unsigned int vx_debug_dlim;
+extern unsigned int vx_debug_quota;
extern unsigned int vx_debug_cvirt;
+extern unsigned int vx_debug_misc;
#define VX_LOGLEVEL "vxD: "
#define vxdprintk(c,f,x...) \
do { \
if (c) \
- printk(VX_LOGLEVEL f "\n", x); \
+ printk(VX_LOGLEVEL f "\n" , ##x); \
} while (0)
#define vxlprintk(c,f,x...) \
printk(VX_LOGLEVEL f " %s@%s:%d\n", x); \
} while (0)
-#else
+
+struct vx_info;
+
+void dump_vx_info(struct vx_info *, int);
+void dump_vx_info_inactive(int);
+
+#else /* CONFIG_VSERVER_DEBUG */
#define vx_debug_switch 0
#define vx_debug_xid 0
#define vx_debug_nid 0
+#define vx_debug_tag 0
#define vx_debug_net 0
#define vx_debug_limit 0
+#define vx_debug_cres 0
#define vx_debug_dlim 0
#define vx_debug_cvirt 0
#define vxlprintk(x...) do { } while (0)
#define vxfprintk(x...) do { } while (0)
-#endif
+#endif /* CONFIG_VSERVER_DEBUG */
+
+
+#ifdef CONFIG_VSERVER_WARN
+
+#define VX_WARNLEVEL KERN_WARNING "vxW: "
+#define vxwprintk(c,f,x...) \
+ do { \
+ if (c) \
+ printk(VX_WARNLEVEL f "\n" , ##x); \
+ } while (0)
+
+#else /* CONFIG_VSERVER_WARN */
+
+#define vxwprintk(x...) do { } while (0)
+
+#endif /* CONFIG_VSERVER_WARN */
+
+
+#ifdef CONFIG_VSERVER_DEBUG
+#define vxd_assert_lock(l) assert_spin_locked(l)
+#define vxd_assert(c,f,x...) vxlprintk(!(c), \
+ "assertion [" f "] failed.", ##x, __FILE__, __LINE__)
+#else
+#define vxd_assert_lock(l) do { } while (0)
+#define vxd_assert(c,f,x...) do { } while (0)
+#endif
#endif /* _VX_DEBUG_H */