1 #ifndef _LINUX_VIRTUAL_H
2 #define _LINUX_VIRTUAL_H
8 #define VC_CATEGORY(c) (((c) >> 24) & 0x3F)
9 #define VC_COMMAND(c) (((c) >> 16) & 0xFF)
10 #define VC_VERSION(c) ((c) & 0xFFF)
12 #define VC_CMD(c,i,v) ((((VC_CAT_ ## c) & 0x3F) << 24) \
13 | (((i) & 0xFF) << 16) | ((v) & 0xFFF))
19 |VERSION|CREATE |MODIFY |MIGRATE|CONTROL|EXPERIM| |SPECIAL|SPECIAL|
20 |STATS |DESTROY|ALTER |CHANGE |LIMIT |TEST | | | |
21 |INFO |SETUP | |MOVE | | | | | |
22 -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
23 SYSTEM |VERSION| | | | | | |DEVICES| |
24 HOST | 00| 01| 02| 03| 04| 05| | 06| 07|
25 -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
26 CPU | | | | | | | |SCHED. | |
27 PROCESS| 08| 09| 10| 11| 12| 13| | 14| 15|
28 -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
29 MEMORY | | | | | | | |SWAP | |
30 | 16| 17| 18| 19| 20| 21| | 22| 23|
31 -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
32 NETWORK| | | | | | | |SERIAL | |
33 | 24| 25| 26| 27| 28| 29| | 30| 31|
34 -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
35 DISK | | | | | | | | | |
36 VFS | 32| 33| 34| 35| 36| 37| | 38| 39|
37 -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
38 OTHER | | | | | | | | | |
39 | 40| 41| 42| 43| 44| 45| | 46| 47|
40 =======+=======+=======+=======+=======+=======+=======+ +=======+=======+
41 SPECIAL| | | | | | | | | |
42 | 48| 49| 50| 51| 52| 53| | 54| 55|
43 -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
44 SPECIAL| | | | |RLIMIT |SYSCALL| | |COMPAT |
45 | 56| 57| 58| 59| 60|TEST 61| | 62| 63|
46 -------+-------+-------+-------+-------+-------+-------+ +-------+-------+
50 #define VC_CAT_VERSION 0
51 #define VC_CAT_VSETUP 1
52 #define VC_CAT_VHOST 2
54 #define VC_CAT_PROCALT 10
55 #define VC_CAT_PROCMIG 11
56 #define VC_CAT_PROCTRL 12
58 #define VC_CAT_SCHED 14
59 #define VC_CAT_INODE 38
61 #define VC_CAT_VINFO 46
63 #define VC_CAT_FLAGS 59
64 #define VC_CAT_RLIMIT 60
66 #define VC_CAT_SYSTEST 61
67 #define VC_CAT_COMPAT 63
71 /* interface version */
73 #define VCI_VERSION 0x00010004
79 #define VCMD_get_version VC_CMD(VERSION, 0, 0)
82 /* compatibiliy vserver commands */
84 #define VCMD_new_s_context VC_CMD(COMPAT, 1, 1)
85 #define VCMD_set_ipv4root VC_CMD(COMPAT, 2, 3)
87 #define VCMD_enter_namespace VC_CMD(PROCALT, 1, 0)
89 /* compatibiliy vserver arguments */
91 struct vcmd_new_s_context_v1 {
96 struct vcmd_set_ipv4root_v3 {
97 /* number of pairs in id */
102 } ip_mask_pair[NB_IPV4ROOT];
105 /* context signalling */
107 #define VCMD_ctx_kill VC_CMD(PROCTRL, 1, 0)
109 struct vcmd_ctx_kill_v0 {
114 /* rlimit vserver commands */
116 #define VCMD_get_rlimit VC_CMD(RLIMIT, 1, 0)
117 #define VCMD_set_rlimit VC_CMD(RLIMIT, 2, 0)
118 #define VCMD_get_rlimit_mask VC_CMD(RLIMIT, 3, 0)
120 struct vcmd_ctx_rlimit_v0 {
127 struct vcmd_ctx_rlimit_mask_v0 {
133 #define CRLIM_INFINITY (~0ULL)
134 #define CRLIM_KEEP (~1ULL)
138 #define VC_CAT_SCHED 14
140 /* scheduler vserver commands */
142 #define VCMD_get_sched VC_CMD(SCHED, 1, 1)
143 #define VCMD_set_sched VC_CMD(SCHED, 2, 1)
146 /* Structure for context's TBF scheduling priorities */
148 struct vcmd_tbf_sched_v1 {
152 uint32_t bucket_size;
155 #define TBFS_PERIOD_AUTO (0ULL)
156 #define TBFS_KEEP_VALUE (~0ULL)
159 /* inode vserver commands */
161 #define VCMD_get_iattr_v0 VC_CMD(INODE, 1, 0)
162 #define VCMD_set_iattr_v0 VC_CMD(INODE, 2, 0)
163 #define VCMD_get_iattr VC_CMD(INODE, 1, 1)
164 #define VCMD_set_iattr VC_CMD(INODE, 2, 1)
166 struct vcmd_ctx_iattr_v1 {
167 const char *file_name;
173 #define IATTR_XID 0x01000000
175 #define IATTR_ADMIN 0x00000001
176 #define IATTR_WATCH 0x00000002
177 #define IATTR_HIDE 0x00000004
179 #define IATTR_BARRIER 0x00010000
180 #define IATTR_IUNLINK 0x00020000
186 #define VCMD_task_xid VC_CMD(VINFO, 1, 0)
187 #define VCMD_task_nid VC_CMD(VINFO, 2, 0)
189 #define VCMD_vx_info VC_CMD(VINFO, 5, 0)
190 #define VCMD_nx_info VC_CMD(VINFO, 6, 0)
192 struct vcmd_vx_info_v0 {
199 #define VCMD_vx_set_vhi_name VC_CMD(VHOST, 1, 0)
200 #define VCMD_vx_get_vhi_name VC_CMD(VHOST, 2, 0)
202 struct vcmd_vx_vhi_name_v0 {
207 enum vx_vhi_name_field {
217 #define VCMD_create_context VC_CMD(VSETUP, 1, 0)
218 #define VCMD_migrate_context VC_CMD(PROCMIG, 1, 0)
220 #define VCMD_get_flags VC_CMD(FLAGS, 1, 0)
221 #define VCMD_set_flags VC_CMD(FLAGS, 2, 0)
222 struct vcmd_ctx_flags_v0 {
228 #define VCMD_get_ccaps VC_CMD(FLAGS, 3, 0)
229 #define VCMD_set_ccaps VC_CMD(FLAGS, 4, 0)
230 struct vcmd_ctx_caps_v0 {
236 #endif /* _LINUX_VIRTUAL_H */