- Update the kernel headers to 2.0.2.1.
authorDaniel Hokka Zakrisson <daniel@hozac.com>
Fri, 15 Sep 2006 21:18:21 +0000 (21:18 +0000)
committerDaniel Hokka Zakrisson <daniel@hozac.com>
Fri, 15 Sep 2006 21:18:21 +0000 (21:18 +0000)
- Add missing flags.
- Fix the calls that got updated so they work as expected.

git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@2317 94cd875c-1c1d-0410-91d2-eb244daf1a30

25 files changed:
kernel/context.h
kernel/context_cmd.h
kernel/cvirt.h
kernel/cvirt_cmd.h
kernel/debug.h
kernel/dlimit_cmd.h
kernel/inode.h
kernel/inode_cmd.h
kernel/legacy.h
kernel/limit.h
kernel/limit_cmd.h
kernel/limit_def.h
kernel/namespace.h
kernel/namespace_cmd.h
kernel/network.h
kernel/sched.h
kernel/sched_cmd.h
kernel/signal_cmd.h
kernel/switch.h
kernel/xid.h
lib/cflags-v13.c
lib/syscall_ctxmigrate-v13.hc
lib/syscall_setnamespace-v13.hc
lib/syscall_waitexit-v13.hc
lib/vserver.h

index ed1145e..816b8a2 100644 (file)
@@ -36,7 +36,9 @@
 #define VXF_STATE_SETUP                (1ULL<<32)
 #define VXF_STATE_INIT         (1ULL<<33)
 
-#define VXF_STATE_HELPER       (1ULL<<36)
+#define VXF_SC_HELPER          (1ULL<<36)
+#define VXF_REBOOT_KILL                (1ULL<<37)
+#define VXF_PERSISTENT         (1ULL<<38)
 
 #define VXF_FORK_RSS           (1ULL<<48)
 #define VXF_PROLIFIC           (1ULL<<49)
 #define VXF_INIT_SET           (VXF_STATE_SETUP|VXF_STATE_INIT)
 
 
+/* context migration */
+
+#define VXM_SET_INIT           0x00000001
+#define VXM_SET_REAPER         0x00000002
+
 /* context caps */
 
 #define VXC_CAP_MASK           0x00000000
@@ -100,15 +107,18 @@ struct vx_info {
        uint64_t vx_bcaps;                      /* bounding caps (system) */
        uint64_t vx_ccaps;                      /* context caps (vserver) */
 
-       pid_t vx_initpid;                       /* PID of fake init process */
-
-       wait_queue_head_t vx_wait;              /* context exit waitqueue */
+       struct task_struct *vx_reaper;          /* guest reaper process */
+       pid_t vx_initpid;                       /* PID of guest init */
 
        struct _vx_limit limit;                 /* vserver limits */
        struct _vx_sched sched;                 /* vserver scheduler */
        struct _vx_cvirt cvirt;                 /* virtual/bias stuff */
        struct _vx_cacct cacct;                 /* context accounting */
 
+       wait_queue_head_t vx_wait;              /* context exit waitqueue */
+       int reboot_cmd;                         /* last sys_reboot() cmd */
+       int exit_code;                          /* last process exit code */
+
        char vx_name[65];                       /* vserver name */
 };
 
@@ -119,6 +129,7 @@ struct vx_info {
 #define VXS_PAUSED     0x0010
 #define VXS_ONHOLD     0x0020
 #define VXS_SHUTDOWN   0x0100
+#define VXS_HELPER     0x1000
 #define VXS_RELEASED   0x8000
 
 /* check conditions */
@@ -144,8 +155,8 @@ struct vx_info {
 extern void claim_vx_info(struct vx_info *, struct task_struct *);
 extern void release_vx_info(struct vx_info *, struct task_struct *);
 
-extern struct vx_info *locate_vx_info(int);
-extern struct vx_info *locate_or_create_vx_info(int);
+extern struct vx_info *lookup_vx_info(int);
+extern struct vx_info *lookup_or_create_vx_info(int);
 
 extern int get_xid_list(int, unsigned int *, int);
 extern int xid_is_hashed(xid_t);
index f631095..5a3195f 100644 (file)
@@ -34,7 +34,12 @@ struct       vcmd_ctx_create {
        uint64_t flagword;
 };
 
-#define VCMD_ctx_migrate       VC_CMD(PROCMIG, 1, 0)
+#define VCMD_ctx_migrate_v0    VC_CMD(PROCMIG, 1, 0)
+#define VCMD_ctx_migrate       VC_CMD(PROCMIG, 1, 1)
+
+struct vcmd_ctx_migrate {
+       uint64_t flagword;
+};
 
 #ifdef __KERNEL__
 extern int vc_ctx_create(uint32_t, void __user *);
index eb13878..204db79 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef _VX_CVIRT_H
 #define _VX_CVIRT_H
 
+
 #ifdef __KERNEL__
 
 struct timespec;
index 3260b9f..6720469 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef _VX_CVIRT_CMD_H
 #define _VX_CVIRT_CMD_H
 
+
 /* virtual host info name commands */
 
 #define VCMD_set_vhi_name      VC_CMD(VHOST, 1, 0)
index afdf3d4..5195209 100644 (file)
@@ -1,9 +1,6 @@
 #ifndef _VX_DEBUG_H
 #define _VX_DEBUG_H
 
-#ifndef CONFIG_VSERVER
-#warning config options missing
-#endif
 
 #define VXD_CBIT(n,m)  (vx_debug_ ## n & (1 << (m)))
 #define VXD_CMIN(n,m)  (vx_debug_ ## n > (m))
@@ -29,6 +26,7 @@ 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_cres;
 extern unsigned int vx_debug_dlim;
 extern unsigned int vx_debug_cvirt;
 extern unsigned int vx_debug_misc;
@@ -62,11 +60,13 @@ extern unsigned int vx_debug_misc;
                        printk(VX_WARNLEVEL f "\n" , ##x);      \
        } while (0)
 
-
 #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>" )
+
 #else  /* CONFIG_VSERVER_DEBUG */
 
 #define vx_debug_switch 0
@@ -74,6 +74,7 @@ extern unsigned int vx_debug_misc;
 #define vx_debug_nid   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
 
@@ -83,6 +84,7 @@ extern unsigned int vx_debug_misc;
 #define vxwprintk(x...) do { } while (0)
 
 #define vxd_path       "<none>"
+#define vxd_cond_path  vxd_path
 
 #endif /* CONFIG_VSERVER_DEBUG */
 
@@ -142,14 +144,9 @@ struct _vx_hist_entry {
 
 struct _vx_hist_entry *vxh_advance(void *loc);
 
-#define VXH_HERE(__type)                       \
-       ({ __label__ __vxh_##__type;            \
-               __vxh_##__type:;                \
-               &&__vxh_##__type; })
-
 
-
-static inline void __vxh_copy_vxi(struct _vx_hist_entry *entry, struct vx_info *vxi)
+static inline
+void   __vxh_copy_vxi(struct _vx_hist_entry *entry, struct vx_info *vxi)
 {
        entry->vxi.ptr = vxi;
        if (vxi) {
@@ -160,95 +157,117 @@ static inline void __vxh_copy_vxi(struct _vx_hist_entry *entry, struct vx_info *
 }
 
 
-#define __VXH_BODY(__type, __data)             \
+#define __HERE__       current_text_addr()
+
+#define __VXH_BODY(__type, __data, __here)     \
        struct _vx_hist_entry *entry;           \
                                                \
        preempt_disable();                      \
-       entry = vxh_advance(VXH_HERE(__type));  \
+       entry = vxh_advance(__here);            \
        __data;                                 \
        entry->type = __type;                   \
        preempt_enable();
 
 
        /* pass vxi only */
-#define __VXH_SIMPLE                           \
+
+#define __VXH_SMPL                             \
        __vxh_copy_vxi(entry, vxi)
 
-#define VXH_SIMPLE(__name, __type)             \
-static inline void __name(struct vx_info *vxi) \
-{                                              \
-       __VXH_BODY(__type, __VXH_SIMPLE)        \
+static inline
+void   __vxh_smpl(struct vx_info *vxi, int __type, void *__here)
+{
+       __VXH_BODY(__type, __VXH_SMPL, __here)
 }
 
        /* pass vxi and data (void *) */
+
 #define __VXH_DATA                             \
        __vxh_copy_vxi(entry, vxi);             \
        entry->sc.data = data
 
-#define VXH_DATA(__name, __type)               \
-static inline                                  \
-void __name(struct vx_info *vxi, void *data)   \
-{                                              \
-       __VXH_BODY(__type, __VXH_DATA)          \
+static inline
+void   __vxh_data(struct vx_info *vxi, void *data,
+                       int __type, void *__here)
+{
+       __VXH_BODY(__type, __VXH_DATA, __here)
 }
 
        /* pass vxi and arg (long) */
-#define __VXH_LARG                             \
+
+#define __VXH_LONG                             \
        __vxh_copy_vxi(entry, vxi);             \
        entry->ll.arg = arg
 
-#define VXH_LARG(__name, __type)               \
-static inline                                  \
-void __name(struct vx_info *vxi, long arg)     \
-{                                              \
-       __VXH_BODY(__type, __VXH_LARG)          \
+static inline
+void   __vxh_long(struct vx_info *vxi, long arg,
+                       int __type, void *__here)
+{
+       __VXH_BODY(__type, __VXH_LONG, __here)
 }
 
 
-static inline void vxh_throw_oops(void)
+static inline
+void   __vxh_throw_oops(void *__here)
 {
-       __VXH_BODY(VXH_THROW_OOPS, {});
+       __VXH_BODY(VXH_THROW_OOPS, {}, __here);
        /* prevent further acquisition */
        vxh_active = 0;
 }
 
-VXH_SIMPLE(vxh_get_vx_info,    VXH_GET_VX_INFO);
-VXH_SIMPLE(vxh_put_vx_info,    VXH_PUT_VX_INFO);
 
-VXH_DATA(vxh_init_vx_info,     VXH_INIT_VX_INFO);
-VXH_DATA(vxh_set_vx_info,      VXH_SET_VX_INFO);
-VXH_DATA(vxh_clr_vx_info,      VXH_CLR_VX_INFO);
+#define vxh_throw_oops()       __vxh_throw_oops(__HERE__);
+
+#define __vxh_get_vx_info(v,h) __vxh_smpl(v, VXH_GET_VX_INFO, h);
+#define __vxh_put_vx_info(v,h) __vxh_smpl(v, VXH_PUT_VX_INFO, h);
+
+#define __vxh_init_vx_info(v,d,h) \
+       __vxh_data(v,d, VXH_INIT_VX_INFO, h);
+#define __vxh_set_vx_info(v,d,h) \
+       __vxh_data(v,d, VXH_SET_VX_INFO, h);
+#define __vxh_clr_vx_info(v,d,h) \
+       __vxh_data(v,d, VXH_CLR_VX_INFO, h);
 
-VXH_DATA(vxh_claim_vx_info,    VXH_CLAIM_VX_INFO);
-VXH_DATA(vxh_release_vx_info,  VXH_RELEASE_VX_INFO);
+#define __vxh_claim_vx_info(v,d,h) \
+       __vxh_data(v,d, VXH_CLAIM_VX_INFO, h);
+#define __vxh_release_vx_info(v,d,h) \
+       __vxh_data(v,d, VXH_RELEASE_VX_INFO, h);
 
-VXH_SIMPLE(vxh_alloc_vx_info,  VXH_ALLOC_VX_INFO);
-VXH_SIMPLE(vxh_dealloc_vx_info, VXH_DEALLOC_VX_INFO);
+#define vxh_alloc_vx_info(v) \
+       __vxh_smpl(v, VXH_ALLOC_VX_INFO, __HERE__);
+#define vxh_dealloc_vx_info(v) \
+       __vxh_smpl(v, VXH_DEALLOC_VX_INFO, __HERE__);
 
-VXH_SIMPLE(vxh_hash_vx_info,   VXH_HASH_VX_INFO);
-VXH_SIMPLE(vxh_unhash_vx_info, VXH_UNHASH_VX_INFO);
+#define vxh_hash_vx_info(v) \
+       __vxh_smpl(v, VXH_HASH_VX_INFO, __HERE__);
+#define vxh_unhash_vx_info(v) \
+       __vxh_smpl(v, VXH_UNHASH_VX_INFO, __HERE__);
 
-VXH_LARG(vxh_loc_vx_info,      VXH_LOC_VX_INFO);
-VXH_LARG(vxh_lookup_vx_info,   VXH_LOOKUP_VX_INFO);
-VXH_LARG(vxh_create_vx_info,   VXH_CREATE_VX_INFO);
+#define vxh_loc_vx_info(v,l) \
+       __vxh_long(v,l, VXH_LOC_VX_INFO, __HERE__);
+#define vxh_lookup_vx_info(v,l) \
+       __vxh_long(v,l, VXH_LOOKUP_VX_INFO, __HERE__);
+#define vxh_create_vx_info(v,l) \
+       __vxh_long(v,l, VXH_CREATE_VX_INFO, __HERE__);
 
 extern void vxh_dump_history(void);
 
 
 #else  /* CONFIG_VSERVER_HISTORY */
 
+#define        __HERE__        0
 
 #define vxh_throw_oops()               do { } while (0)
 
-#define vxh_get_vx_info(v)             do { } while (0)
-#define vxh_put_vx_info(v)             do { } while (0)
+#define __vxh_get_vx_info(v,h)         do { } while (0)
+#define __vxh_put_vx_info(v,h)         do { } while (0)
 
-#define vxh_init_vx_info(v,d)          do { } while (0)
-#define vxh_set_vx_info(v,d)           do { } while (0)
-#define vxh_clr_vx_info(v,d)           do { } while (0)
+#define __vxh_init_vx_info(v,d,h)      do { } while (0)
+#define __vxh_set_vx_info(v,d,h)       do { } while (0)
+#define __vxh_clr_vx_info(v,d,h)       do { } while (0)
 
-#define vxh_claim_vx_info(v,d)         do { } while (0)
-#define vxh_release_vx_info(v,d)       do { } while (0)
+#define __vxh_claim_vx_info(v,d,h)     do { } while (0)
+#define __vxh_release_vx_info(v,d,h)   do { } while (0)
 
 #define vxh_alloc_vx_info(v)           do { } while (0)
 #define vxh_dealloc_vx_info(v)         do { } while (0)
index b91a946..35f7a68 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef _VX_DLIMIT_CMD_H
 #define _VX_DLIMIT_CMD_H
 
+
 /*  dlimit vserver commands */
 
 #define VCMD_add_dlimit                VC_CMD(DLIMIT, 1, 0)
index 25859ee..d5dec6a 100644 (file)
@@ -15,9 +15,6 @@
 
 #ifdef __KERNEL__
 
-#ifndef CONFIG_VSERVER
-#warning config options missing
-#endif
 
 #ifdef CONFIG_VSERVER_PROC_SECURE
 #define IATTR_PROC_DEFAULT     ( IATTR_ADMIN | IATTR_HIDE )
index f14c899..df5e966 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef _VX_INODE_CMD_H
 #define _VX_INODE_CMD_H
 
+
 /*  inode vserver commands */
 
 #define VCMD_get_iattr_v0      VC_CMD(INODE, 1, 0)
@@ -27,6 +28,7 @@ struct        vcmd_ctx_iattr_v1 {
 
 #ifdef __KERNEL__
 
+
 #ifdef CONFIG_COMPAT
 
 struct vcmd_ctx_iattr_v1_x32 {
index f058983..41afbd9 100644 (file)
@@ -3,6 +3,7 @@
 
 #include "switch.h"
 
+
 /*  compatibiliy vserver commands */
 
 #define VCMD_new_s_context     VC_CMD(COMPAT, 1, 1)
index 8656fd9..aaaee11 100644 (file)
@@ -14,11 +14,7 @@ struct sysinfo;
 void vx_vsi_meminfo(struct sysinfo *);
 void vx_vsi_swapinfo(struct sysinfo *);
 
-#define VXD_RLIMIT(r,l)                (VXD_CBIT(limit, (l)) && ((r) == (l)))
-
 #define NUM_LIMITS     24
 
-extern const char *vlimit_name[NUM_LIMITS];
-
 #endif /* __KERNEL__ */
 #endif /* _VX_LIMIT_H */
index a994d02..13a7892 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef _VX_LIMIT_CMD_H
 #define _VX_LIMIT_CMD_H
 
+
 /*  rlimit vserver commands */
 
 #define VCMD_get_rlimit                VC_CMD(RLIMIT, 1, 0)
@@ -26,11 +27,29 @@ struct      vcmd_ctx_rlimit_mask_v0 {
 
 #ifdef __KERNEL__
 
+#ifdef CONFIG_IA32_EMULATION
+
+struct vcmd_ctx_rlimit_v0_x32 {
+       uint32_t id;
+       uint64_t minimum;
+       uint64_t softlimit;
+       uint64_t maximum;
+} __attribute__ ((aligned (4)));
+
+#endif /* CONFIG_IA32_EMULATION */
+
 #include <linux/compiler.h>
 
 extern int vc_get_rlimit(uint32_t, void __user *);
 extern int vc_set_rlimit(uint32_t, void __user *);
 extern int vc_get_rlimit_mask(uint32_t, void __user *);
 
+#ifdef CONFIG_IA32_EMULATION
+
+extern int vc_get_rlimit_x32(uint32_t, void __user *);
+extern int vc_set_rlimit_x32(uint32_t, void __user *);
+
+#endif /* CONFIG_IA32_EMULATION */
+
 #endif /* __KERNEL__ */
 #endif /* _VX_LIMIT_CMD_H */
index bab1def..b4a32c8 100644 (file)
@@ -6,6 +6,7 @@
 
 #include "limit.h"
 
+
 /* context sub struct */
 
 struct _vx_limit {
index 1a6bb84..fb6cdd1 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef _VX_NAMESPACE_H
 #define _VX_NAMESPACE_H
 
+
 #include <linux/types.h>
 
 struct vx_info;
index 7533100..b88f263 100644 (file)
@@ -1,15 +1,17 @@
 #ifndef _VX_NAMESPACE_CMD_H
 #define _VX_NAMESPACE_CMD_H
 
+
 #define VCMD_enter_namespace   VC_CMD(PROCALT, 1, 0)
+/* XXX: This is not available in recent kernels */ 
 #define VCMD_cleanup_namespace VC_CMD(PROCALT, 2, 0)
-#define VCMD_set_namespace     VC_CMD(PROCALT, 3, 0)
+#define VCMD_set_namespace_v0  VC_CMD(PROCALT, 3, 0)
+#define VCMD_set_namespace     VC_CMD(PROCALT, 3, 1)
 
 
 #ifdef __KERNEL__
 
 extern int vc_enter_namespace(uint32_t, void __user *);
-extern int vc_cleanup_namespace(uint32_t, void __user *);
 extern int vc_set_namespace(uint32_t, void __user *);
 
 #endif /* __KERNEL__ */
index 84a005c..0e0253b 100644 (file)
@@ -15,7 +15,8 @@
 
 #define NXF_STATE_SETUP                (1ULL<<32)
 
-#define NXF_STATE_HELPER       (1ULL<<36)
+#define NXF_SC_HELPER          (1ULL<<36)
+#define NXF_PERSISTENT         (1ULL<<38)
 
 #define NXF_ONE_TIME           (0x0001ULL<<32)
 
@@ -29,7 +30,7 @@
 
 #define NXA_MOD_BCAST          (1<<8)
 
-#define NXA_TYPE_ANY           (~0)
+#define NXA_TYPE_ANY           ((uint16_t)-1)
 
 
 #ifdef __KERNEL__
@@ -70,8 +71,7 @@ struct nx_info {
 #define NXS_SHUTDOWN    0x0100
 #define NXS_RELEASED    0x8000
 
-extern struct nx_info *locate_nx_info(int);
-extern struct nx_info *locate_or_create_nx_info(int);
+extern struct nx_info *lookup_nx_info(int);
 
 extern int get_nid_list(int, unsigned int *, int);
 extern int nid_is_hashed(nid_t);
@@ -83,12 +83,35 @@ extern long vs_net_change(struct nx_info *, unsigned int);
 struct in_ifaddr;
 struct net_device;
 
+#ifdef CONFIG_INET
 int ifa_in_nx_info(struct in_ifaddr *, struct nx_info *);
 int dev_in_nx_info(struct net_device *, struct nx_info *);
 
+#else /* CONFIG_INET */
+static inline
+int ifa_in_nx_info(struct in_ifaddr *a, struct nx_info *n)
+{
+       return 1;
+}
+
+static inline
+int dev_in_nx_info(struct net_device *d, struct nx_info *n)
+{
+       return 1;
+}
+#endif /* CONFIG_INET */
+
 struct sock;
 
+#ifdef CONFIG_INET
 int nx_addr_conflict(struct nx_info *, uint32_t, struct sock *);
+#else /* CONFIG_INET */
+static inline
+int nx_addr_conflict(struct nx_info *n, uint32_t a, struct sock *s)
+{
+       return 1;
+}
+#endif /* CONFIG_INET */
 
 #endif /* __KERNEL__ */
 #else  /* _VX_NETWORK_H */
index 60569ab..2ef4b99 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef _VX_SCHED_H
 #define _VX_SCHED_H
 
+
 #ifdef __KERNEL__
 
 struct timespec;
index 2a6f55b..b9e8ac1 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef _VX_SCHED_CMD_H
 #define _VX_SCHED_CMD_H
 
+
 /*  sched vserver commands */
 
 #define VCMD_set_sched_v2      VC_CMD(SCHED, 1, 2)
index e842538..1a2bcc3 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef _VX_SIGNAL_CMD_H
 #define _VX_SIGNAL_CMD_H
 
+
 /*  signalling vserver commands */
 
 #define VCMD_ctx_kill          VC_CMD(PROCTRL, 1, 0)
@@ -12,8 +13,8 @@ struct        vcmd_ctx_kill_v0 {
 };
 
 struct vcmd_wait_exit_v0 {
-       int32_t a;
-       int32_t b;
+       int32_t reboot_cmd;
+       int32_t exit_code;
 };
 
 #ifdef __KERNEL__
index 0c7fddb..b7e255e 100644 (file)
@@ -3,6 +3,7 @@
 
 #include <linux/types.h>
 
+
 #define VC_CATEGORY(c)         (((c) >> 24) & 0x3F)
 #define VC_COMMAND(c)          (((c) >> 16) & 0xFF)
 #define VC_VERSION(c)          ((c) & 0xFFF)
@@ -77,7 +78,7 @@
 
 /*  interface version */
 
-#define VCI_VERSION            0x00020001
+#define VCI_VERSION            0x00020002
 #define VCI_LEGACY_VERSION     0x000100FF
 
 /*  query version */
index 263ed67..2e4349e 100644 (file)
@@ -1,9 +1,8 @@
 #ifndef _VX_XID_H
 #define _VX_XID_H
 
-#ifndef CONFIG_VSERVER
-#warning config options missing
-#endif
+#include <linux/config.h>
+
 
 #define XID_TAG(in)    (IS_TAGXID(in))
 
index a779503..8f0b240 100644 (file)
@@ -54,6 +54,10 @@ static struct Mapping_uint64 const VALUES[] = {
   DECL("state_setup",   VC_VXF_STATE_SETUP),
   DECL("state_init",    VC_VXF_STATE_INIT),
 
+  DECL("sc_helper",    VC_VXF_SC_HELPER),
+  DECL("persistent",   VC_VXF_PERSISTENT),
+  DECL("reboot_kill",  VC_VXF_REBOOT_KILL),
+
   DECL("fork_rss",     VC_VXF_FORK_RSS),
   DECL("prolific",     VC_VXF_PROLIFIC),
   DECL("igneg_nice",    VC_VXF_IGNEG_NICE),
index bc18a19..34b3073 100644 (file)
@@ -23,5 +23,5 @@
 static inline ALWAYSINLINE int
 vc_ctx_migrate_v13(xid_t xid)
 {
-  return vserver(VCMD_ctx_migrate, CTX_USER2KERNEL(xid), 0);
+  return vserver(VCMD_ctx_migrate, CTX_USER2KERNEL(xid), NULL);
 }
index 04fec90..ce7d5ad 100644 (file)
@@ -25,5 +25,5 @@
 static inline ALWAYSINLINE int
 vc_set_namespace_v13(int UNUSED tmp)
 {
-  return vserver(VCMD_set_namespace, 0, 0);
+  return vserver(VCMD_set_namespace, -1, 0);
 }
index d786a17..d44ad2a 100644 (file)
@@ -23,7 +23,7 @@
 static inline ALWAYSINLINE int
 vc_wait_exit_v13b(xid_t ctx)
 {
-  struct vcmd_wait_exit_v0     param = { .a = 0, .b = 0 };
+  struct vcmd_wait_exit_v0     param = { .reboot_cmd = 0, .exit_code = 0 };
 
   return vserver(VCMD_wait_exit, CTX_USER2KERNEL(ctx), &param);
 }
index 8279869..cdf671a 100644 (file)
 #define        VC_VXF_STATE_SETUP              (1ULL<<32)
 #define        VC_VXF_STATE_INIT               (1ULL<<33)
 
+#define VC_VXF_SC_HELPER               (1ULL<<36)
+#define VC_VXF_REBOOT_KILL             (1ULL<<37)
+#define VC_VXF_PERSISTENT              (1ULL<<38)
+
 #define VC_VXF_FORK_RSS                        (1ULL<<48)
 #define VC_VXF_PROLIFIC                        (1ULL<<49)