updated
authorEnrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Mon, 18 Oct 2004 15:46:16 +0000 (15:46 +0000)
committerEnrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Mon, 18 Oct 2004 15:46:16 +0000 (15:46 +0000)
git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@1726 94cd875c-1c1d-0410-91d2-eb244daf1a30

util-vserver/kernel/debug.h [new file with mode: 0644]
util-vserver/kernel/dlimit.h [new file with mode: 0644]

diff --git a/util-vserver/kernel/debug.h b/util-vserver/kernel/debug.h
new file mode 100644 (file)
index 0000000..9529c3c
--- /dev/null
@@ -0,0 +1,67 @@
+#ifndef _VX_DEBUG_H
+#define _VX_DEBUG_H
+
+
+#define VXD_CBIT(n,m)  (vx_debug_ ## n & (1 << (m)))
+#define VXD_CMIN(n,m)  (vx_debug_ ## n > (m))
+#define VXD_MASK(n,m)  (vx_debug_ ## n & (m))
+
+#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     VXD_HERE        __FILE__, __LINE__
+
+#define __FUNC__       __func__
+
+
+#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_net;
+extern unsigned int vx_debug_limit;
+extern unsigned int vx_debug_dlim;
+extern unsigned int vx_debug_cvirt;
+
+
+#define VX_LOGLEVEL    "vxD: "
+
+#define vxdprintk(c,f,x...)                                    \
+       do {                                                    \
+               if (c)                                          \
+                       printk(VX_LOGLEVEL f "\n", x);          \
+       } while (0)
+
+#define vxlprintk(c,f,x...)                                    \
+       do {                                                    \
+               if (c)                                          \
+                       printk(VX_LOGLEVEL f " @%s:%d\n", x);   \
+       } while (0)
+
+#define vxfprintk(c,f,x...)                                    \
+       do {                                                    \
+               if (c)                                          \
+                       printk(VX_LOGLEVEL f " %s@%s:%d\n", x); \
+       } while (0)
+
+#else
+
+#define vx_debug_switch 0
+#define vx_debug_xid   0
+#define vx_debug_nid   0
+#define vx_debug_net   0
+#define vx_debug_limit 0
+#define vx_debug_dlim  0
+#define vx_debug_cvirt 0
+
+#define vxdprintk(x...) do { } while (0)
+#define vxlprintk(x...) do { } while (0)
+#define vxfprintk(x...) do { } while (0)
+
+#endif
+
+
+
+#endif /* _VX_DEBUG_H */
diff --git a/util-vserver/kernel/dlimit.h b/util-vserver/kernel/dlimit.h
new file mode 100644 (file)
index 0000000..14a68fd
--- /dev/null
@@ -0,0 +1,85 @@
+#ifndef _VX_DLIMIT_H
+#define _VX_DLIMIT_H
+
+#include "switch.h"
+#include <linux/spinlock.h>
+
+/*  inode vserver commands */
+
+#define VCMD_add_dlimit                VC_CMD(DLIMIT, 1, 0)
+#define VCMD_rem_dlimit                VC_CMD(DLIMIT, 2, 0)
+
+#define VCMD_set_dlimit                VC_CMD(DLIMIT, 5, 0)
+#define VCMD_get_dlimit                VC_CMD(DLIMIT, 6, 0)
+
+
+struct vcmd_ctx_dlimit_base_v0 {
+       const char __user *name;
+       uint32_t flags;
+};
+
+struct vcmd_ctx_dlimit_v0 {
+       const char __user *name;
+       uint32_t space_used;                    /* used space in kbytes */
+       uint32_t space_total;                   /* maximum space in kbytes */
+       uint32_t inodes_used;                   /* used inodes */
+       uint32_t inodes_total;                  /* maximum inodes */
+       uint32_t reserved;                      /* reserved for root in % */
+       uint32_t flags;
+};
+
+#define CDLIM_UNSET            (0ULL)
+#define CDLIM_INFINITY         (~0ULL)
+#define CDLIM_KEEP             (~1ULL)
+
+
+#ifdef __KERNEL__
+
+struct super_block;
+
+struct dl_info {
+       struct hlist_node dl_hlist;             /* linked list of contexts */
+       struct rcu_head dl_rcu;                 /* the rcu head */
+       xid_t dl_xid;                           /* context id */
+       atomic_t dl_usecnt;                     /* usage count */
+       atomic_t dl_refcnt;                     /* reference count */
+
+       struct super_block *dl_sb;              /* associated superblock */
+
+//     struct rw_semaphore dl_sem;             /* protect the values */
+       spinlock_t dl_lock;                     /* protect the values */
+
+       uint64_t dl_space_used;                 /* used space in bytes */
+       uint64_t dl_space_total;                /* maximum space in bytes */
+       uint32_t dl_inodes_used;                /* used inodes */
+       uint32_t dl_inodes_total;               /* maximum inodes */
+
+       unsigned int dl_nrlmult;                /* non root limit mult */
+};
+
+struct rcu_head;
+
+extern void rcu_free_dl_info(struct rcu_head *);
+extern void unhash_dl_info(struct dl_info *);
+
+extern struct dl_info *locate_dl_info(struct super_block *, xid_t);
+
+
+struct kstatfs;
+
+extern void vx_vsi_statfs(struct super_block *, struct kstatfs *);
+
+
+extern int vc_add_dlimit(uint32_t, void __user *);
+extern int vc_rem_dlimit(uint32_t, void __user *);
+
+extern int vc_set_dlimit(uint32_t, void __user *);
+extern int vc_get_dlimit(uint32_t, void __user *);
+
+
+typedef uint64_t dlsize_t;
+
+
+#endif /* __KERNEL__ */
+
+#endif /* _VX_DLIMIT_H */