merge with 0.30.213
[util-vserver.git] / kernel / sched_cmd.h
index 2a6f55b..c18fb9e 100644 (file)
@@ -1,10 +1,12 @@
 #ifndef _VX_SCHED_CMD_H
 #define _VX_SCHED_CMD_H
 
+
 /*  sched vserver commands */
 
 #define VCMD_set_sched_v2      VC_CMD(SCHED, 1, 2)
-#define VCMD_set_sched         VC_CMD(SCHED, 1, 3)
+#define VCMD_set_sched_v3      VC_CMD(SCHED, 1, 3)
+#define VCMD_set_sched_v4      VC_CMD(SCHED, 1, 4)
 
 struct vcmd_set_sched_v2 {
        int32_t fill_rate;
@@ -25,23 +27,66 @@ struct      vcmd_set_sched_v3 {
        int32_t priority_bias;
 };
 
+struct vcmd_set_sched_v4 {
+       uint32_t set_mask;
+       int32_t fill_rate;
+       int32_t interval;
+       int32_t tokens;
+       int32_t tokens_min;
+       int32_t tokens_max;
+       int32_t prio_bias;
+       int32_t cpu_id;
+       int32_t bucket_id;
+};
+
+#define VCMD_set_sched         VC_CMD(SCHED, 1, 5)
+#define VCMD_get_sched         VC_CMD(SCHED, 2, 5)
+
+struct vcmd_sched_v5 {
+       uint32_t mask;
+       int32_t cpu_id;
+       int32_t bucket_id;
+       int32_t fill_rate[2];
+       int32_t interval[2];
+       int32_t tokens;
+       int32_t tokens_min;
+       int32_t tokens_max;
+       int32_t prio_bias;
+};
 
 #define VXSM_FILL_RATE         0x0001
 #define VXSM_INTERVAL          0x0002
+#define VXSM_FILL_RATE2                0x0004
+#define VXSM_INTERVAL2         0x0008
 #define VXSM_TOKENS            0x0010
 #define VXSM_TOKENS_MIN                0x0020
 #define VXSM_TOKENS_MAX                0x0040
 #define VXSM_PRIO_BIAS         0x0100
 
-#define SCHED_KEEP             (-2)
+#define VXSM_IDLE_TIME         0x0200
+#define VXSM_FORCE             0x0400
+
+#define        VXSM_V3_MASK            0x0173
+#define        VXSM_SET_MASK           0x01FF
 
-#ifdef __KERNEL__
+#define VXSM_CPU_ID            0x1000
+#define VXSM_BUCKET_ID         0x2000
 
-#include <linux/compiler.h>
+#define VXSM_MSEC              0x4000
 
-extern int vc_set_sched_v1(uint32_t, void __user *);
-extern int vc_set_sched_v2(uint32_t, void __user *);
-extern int vc_set_sched(uint32_t, void __user *);
+#define SCHED_KEEP             (-2)    /* only for v2 */
+
+
+#define VCMD_sched_info                VC_CMD(SCHED, 3, 0)
+
+struct vcmd_sched_info {
+       int32_t cpu_id;
+       int32_t bucket_id;
+       uint64_t user_msec;
+       uint64_t sys_msec;
+       uint64_t hold_msec;
+       uint32_t token_usec;
+       int32_t vavavoom;
+};
 
-#endif /* __KERNEL__ */
 #endif /* _VX_SCHED_CMD_H */