fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / include / linux / vserver / sched_cmd.h
1 #ifndef _VX_SCHED_CMD_H
2 #define _VX_SCHED_CMD_H
3
4
5 /*  sched vserver commands */
6
7 #define VCMD_set_sched_v2       VC_CMD(SCHED, 1, 2)
8 #define VCMD_set_sched_v3       VC_CMD(SCHED, 1, 3)
9 #define VCMD_set_sched_v4       VC_CMD(SCHED, 1, 4)
10
11 struct  vcmd_set_sched_v2 {
12         int32_t fill_rate;
13         int32_t interval;
14         int32_t tokens;
15         int32_t tokens_min;
16         int32_t tokens_max;
17         uint64_t cpu_mask;
18 };
19
20 struct  vcmd_set_sched_v3 {
21         uint32_t set_mask;
22         int32_t fill_rate;
23         int32_t interval;
24         int32_t tokens;
25         int32_t tokens_min;
26         int32_t tokens_max;
27         int32_t priority_bias;
28 };
29
30 struct  vcmd_set_sched_v4 {
31         uint32_t set_mask;
32         int32_t fill_rate;
33         int32_t interval;
34         int32_t tokens;
35         int32_t tokens_min;
36         int32_t tokens_max;
37         int32_t prio_bias;
38         int32_t cpu_id;
39         int32_t bucket_id;
40 };
41
42 #define VCMD_set_sched          VC_CMD(SCHED, 1, 5)
43 #define VCMD_get_sched          VC_CMD(SCHED, 2, 5)
44
45 struct  vcmd_sched_v5 {
46         uint32_t mask;
47         int32_t cpu_id;
48         int32_t bucket_id;
49         int32_t fill_rate[2];
50         int32_t interval[2];
51         int32_t tokens;
52         int32_t tokens_min;
53         int32_t tokens_max;
54         int32_t prio_bias;
55 };
56
57 #define VXSM_FILL_RATE          0x0001
58 #define VXSM_INTERVAL           0x0002
59 #define VXSM_FILL_RATE2         0x0004
60 #define VXSM_INTERVAL2          0x0008
61 #define VXSM_TOKENS             0x0010
62 #define VXSM_TOKENS_MIN         0x0020
63 #define VXSM_TOKENS_MAX         0x0040
64 #define VXSM_PRIO_BIAS          0x0100
65
66 #define VXSM_IDLE_TIME          0x0200
67 #define VXSM_FORCE              0x0400
68
69 #define VXSM_V3_MASK            0x0173
70 #define VXSM_SET_MASK           0x01FF
71
72 #define VXSM_CPU_ID             0x1000
73 #define VXSM_BUCKET_ID          0x2000
74
75 #define VXSM_MSEC               0x4000
76
77 #define SCHED_KEEP              (-2)    /* only for v2 */
78
79 #ifdef  __KERNEL__
80
81 #include <linux/compiler.h>
82
83 extern int vc_set_sched_v2(struct vx_info *, void __user *);
84 extern int vc_set_sched_v3(struct vx_info *, void __user *);
85 extern int vc_set_sched_v4(struct vx_info *, void __user *);
86 extern int vc_set_sched(struct vx_info *, void __user *);
87 extern int vc_get_sched(struct vx_info *, void __user *);
88
89 #endif  /* __KERNEL__ */
90
91 #define VCMD_sched_info         VC_CMD(SCHED, 3, 0)
92
93 struct  vcmd_sched_info {
94         int32_t cpu_id;
95         int32_t bucket_id;
96         uint64_t user_msec;
97         uint64_t sys_msec;
98         uint64_t hold_msec;
99         uint32_t token_usec;
100         int32_t vavavoom;
101 };
102
103 #ifdef  __KERNEL__
104
105 extern int vc_sched_info(struct vx_info *, void __user *);
106
107 #endif  /* __KERNEL__ */
108 #endif  /* _VX_SCHED_CMD_H */