X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Flib%2Fvirtual.h;h=66add485a31fa48cb6934d100c0e3ca4a38aef4b;hb=baf517f8c35f7b0eea57205866c0f6018db916a2;hp=ac6a3d7874220a496681151311916c4bd142dc3e;hpb=9bac3099d94faabc10f8916475bcfd38eb7acc49;p=util-vserver.git diff --git a/util-vserver/lib/virtual.h b/util-vserver/lib/virtual.h index ac6a3d7..66add48 100644 --- a/util-vserver/lib/virtual.h +++ b/util-vserver/lib/virtual.h @@ -1,6 +1,10 @@ #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) @@ -10,7 +14,7 @@ /* - Syscall Matrix V2.2 + Syscall Matrix V2.3 |VERSION|CREATE |MODIFY |MIGRATE|CONTROL|EXPERIM| |SPECIAL|SPECIAL| |STATS |DESTROY|ALTER |CHANGE |LIMIT |TEST | | | | @@ -43,16 +47,30 @@ */ -#define VC_CAT_VERSION 0 - +#define VC_CAT_VERSION 0 +#define VC_CAT_VSETUP 1 +#define VC_CAT_VHOST 2 + +#define VC_CAT_PROCALT 10 +#define VC_CAT_PROCMIG 11 +#define VC_CAT_PROCTRL 12 + +#define VC_CAT_SCHED 14 +#define VC_CAT_INODE 38 + +#define VC_CAT_VINFO 46 + +#define VC_CAT_FLAGS 59 #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 @@ -66,6 +84,10 @@ #define VCMD_new_s_context VC_CMD(COMPAT, 1, 1) #define VCMD_set_ipv4root VC_CMD(COMPAT, 2, 3) +#define VCMD_enter_namespace VC_CMD(PROCALT, 1, 0) +#define VCMD_cleanup_namespace VC_CMD(PROCALT, 2, 0) +#define VCMD_set_namespace VC_CMD(PROCALT, 3, 0) + /* compatibiliy vserver arguments */ struct vcmd_new_s_context_v1 { @@ -73,8 +95,6 @@ struct vcmd_new_s_context_v1 { uint32_t flags; }; -#define NB_IPV4ROOT 16 - struct vcmd_set_ipv4root_v3 { /* number of pairs in id */ uint32_t broadcast; @@ -84,15 +104,23 @@ struct vcmd_set_ipv4root_v3 { } 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; @@ -104,8 +132,107 @@ struct vcmd_ctx_rlimit_mask_v0 { 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_v0 VC_CMD(INODE, 1, 0) +#define VCMD_set_iattr_v0 VC_CMD(INODE, 2, 0) +#define VCMD_get_iattr VC_CMD(INODE, 1, 1) +#define VCMD_set_iattr VC_CMD(INODE, 2, 1) + +struct vcmd_ctx_iattr_v1 { + const char *file_name; + 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 + + + +/* vinfo commands */ + +#define VCMD_task_xid VC_CMD(VINFO, 1, 0) +#define VCMD_task_nid VC_CMD(VINFO, 2, 0) + +#define VCMD_vx_info VC_CMD(VINFO, 5, 0) +#define VCMD_nx_info VC_CMD(VINFO, 6, 0) + +struct vcmd_vx_info_v0 { + uint32_t xid; + uint32_t initpid; + /* more to come */ +}; + + +#define VCMD_vx_set_vhi_name VC_CMD(VHOST, 1, 0) +#define VCMD_vx_get_vhi_name VC_CMD(VHOST, 2, 0) + +struct vcmd_vx_vhi_name_v0 { + uint32_t field; + char name[65]; +}; + +enum vx_vhi_name_field { + VHIN_CONTEXT=0, + VHIN_SYSNAME, + VHIN_NODENAME, + VHIN_RELEASE, + VHIN_VERSION, + VHIN_MACHINE, + VHIN_DOMAINNAME, +}; + +#define VCMD_create_context VC_CMD(VSETUP, 1, 0) +#define VCMD_migrate_context VC_CMD(PROCMIG, 1, 0) + +#define VCMD_get_flags VC_CMD(FLAGS, 1, 0) +#define VCMD_set_flags VC_CMD(FLAGS, 2, 0) +struct vcmd_ctx_flags_v0 { + uint64_t flagword; + uint64_t mask; +}; + + +#define VCMD_get_ccaps VC_CMD(FLAGS, 3, 0) +#define VCMD_set_ccaps VC_CMD(FLAGS, 4, 0) +struct vcmd_ctx_caps_v0 { + uint64_t scaps; + uint64_t ccaps; + uint64_t cmask; +}; #endif /* _LINUX_VIRTUAL_H */