#define VXF_STATE_SETUP (1ULL<<32)
#define VXF_STATE_INIT (1ULL<<33)
+#define VXF_STATE_HELPER (1ULL<<36)
+
#define VXF_FORK_RSS (1ULL<<48)
#define VXF_PROLIFIC (1ULL<<49)
#define VXF_ONE_TIME (0x0003ULL<<32)
+#define VXF_INIT_SET (VXF_STATE_SETUP|VXF_STATE_INIT)
+
/* context caps */
#define VXC_SET_RLIMIT 0x00000002
#define VXC_RAW_ICMP 0x00000100
+#define VXC_SYSLOG 0x00001000
#define VXC_SECURE_MOUNT 0x00010000
#define VXC_SECURE_REMOUNT 0x00020000
#define VXC_QUOTA_CTL 0x00100000
-/* vshelper sync commands */
+/* context state changes */
-#define VS_CONTEXT_CREATED 1
-#define VS_CONTEXT_DESTROY 2
+enum {
+ VSC_STARTUP = 1,
+ VSC_SHUTDOWN,
+
+ VSC_NETUP,
+ VSC_NETDOWN,
+};
#ifdef __KERNEL__
struct vx_info {
struct hlist_node vx_hlist; /* linked list of contexts */
- struct rcu_head vx_rcu; /* the rcu head */
xid_t vx_id; /* context id */
atomic_t vx_usecnt; /* usage count */
atomic_t vx_tasks; /* tasks count */
pid_t vx_initpid; /* PID of fake init process */
- spinlock_t vx_lock;
- wait_queue_head_t vx_exit; /* context exit waitqueue */
+ wait_queue_head_t vx_wait; /* context exit waitqueue */
struct _vx_limit limit; /* vserver limits */
struct _vx_sched sched; /* vserver scheduler */
#define VXS_PAUSED 0x0010
#define VXS_ONHOLD 0x0020
#define VXS_SHUTDOWN 0x0100
-#define VXS_DEFUNCT 0x1000
#define VXS_RELEASED 0x8000
/* check conditions */
extern int vx_migrate_task(struct task_struct *, struct vx_info *);
-extern long vs_context_state(struct vx_info *, unsigned int);
-
-extern void free_vx_info(struct vx_info *);
+extern long vs_state_change(struct vx_info *, unsigned int);
#endif /* __KERNEL__ */