#ifndef _LINUX_VIRTUAL_H
#define _LINUX_VIRTUAL_H
+
+#define NB_IPV4ROOT 16
+
+
#define VC_CATEGORY(c) (((c) >> 24) & 0x3F)
#define VC_COMMAND(c) (((c) >> 16) & 0xFF)
#define VC_VERSION(c) ((c) & 0xFFF)
/*
- Syscall Matrix V2.2
+ Syscall Matrix V2.3
|VERSION|CREATE |MODIFY |MIGRATE|CONTROL|EXPERIM| |SPECIAL|SPECIAL|
|STATS |DESTROY|ALTER |CHANGE |LIMIT |TEST | | | |
*/
-#define VC_CAT_VERSION 0
+#define VC_CAT_VERSION 0
+#define VC_CAT_PROCTRL 12
+
+#define VC_CAT_SCHED 14
+#define VC_CAT_INODE 38
+
#define VC_CAT_RLIMIT 60
#define VC_CAT_SYSTEST 61
-#define VC_CAT_COMPAT 63
+#define VC_CAT_COMPAT 63
/* interface version */
-#define VCI_VERSION 0x00010001
+#define VCI_VERSION 0x00010004
uint32_t flags;
};
-#define NB_IPV4ROOT 16
-
struct vcmd_set_ipv4root_v3 {
/* number of pairs in id */
uint32_t broadcast;
} ip_mask_pair[NB_IPV4ROOT];
};
+/* context signalling */
+
+#define VCMD_ctx_kill VC_CMD(PROCTRL, 1, 0)
+
+struct vcmd_ctx_kill_v0 {
+ int32_t pid;
+ int32_t sig;
+};
/* rlimit vserver commands */
-#define VCMD_get_rlimit VC_CMD(RLIMIT, 1, 0)
-#define VCMD_set_rlimit VC_CMD(RLIMIT, 2, 0)
-#define VCMD_get_rlimit_mask VC_CMD(RLIMIT, 3, 0)
+#define VCMD_get_rlimit VC_CMD(RLIMIT, 1, 0)
+#define VCMD_set_rlimit VC_CMD(RLIMIT, 2, 0)
+#define VCMD_get_rlimit_mask VC_CMD(RLIMIT, 3, 0)
struct vcmd_ctx_rlimit_v0 {
- uint32_t id;
+ uint32_t id;
uint64_t minimum;
uint64_t softlimit;
uint64_t maximum;
uint32_t maximum;
};
-#define CRLIM_INFINITY (~0ULL)
-#define CRLIM_KEEP (~1ULL)
+#define CRLIM_INFINITY (~0ULL)
+#define CRLIM_KEEP (~1ULL)
+
+
+
+#define VC_CAT_SCHED 14
+
+/* scheduler vserver commands */
+
+#define VCMD_get_sched VC_CMD(SCHED, 1, 1)
+#define VCMD_set_sched VC_CMD(SCHED, 2, 1)
+
+
+/* Structure for context's TBF scheduling priorities */
+
+struct vcmd_tbf_sched_v1 {
+ uint32_t fill_level;
+ uint32_t fill_rate;
+ uint32_t period;
+ uint32_t bucket_size;
+};
+
+#define TBFS_PERIOD_AUTO (0ULL)
+#define TBFS_KEEP_VALUE (~0ULL)
+
+
+/* inode vserver commands */
+
+#define VCMD_get_iattr VC_CMD(INODE, 1, 0)
+#define VCMD_set_iattr VC_CMD(INODE, 2, 0)
+
+struct vcmd_ctx_iattr_v0 {
+ uint64_t dev;
+ uint64_t ino;
+ uint32_t xid;
+ uint32_t flags;
+ uint32_t mask;
+};
+
+#define IATTR_XID 0x01000000
+
+#define IATTR_ADMIN 0x00000001
+#define IATTR_WATCH 0x00000002
+#define IATTR_HIDE 0x00000004
+
+#define IATTR_BARRIER 0x00010000
+#define IATTR_IUNLINK 0x00020000
+
+
#endif /* _LINUX_VIRTUAL_H */