merge with 0.30.213
[util-vserver.git] / kernel / 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
80 #define VCMD_sched_info         VC_CMD(SCHED, 3, 0)
81
82 struct  vcmd_sched_info {
83         int32_t cpu_id;
84         int32_t bucket_id;
85         uint64_t user_msec;
86         uint64_t sys_msec;
87         uint64_t hold_msec;
88         uint32_t token_usec;
89         int32_t vavavoom;
90 };
91
92 #endif  /* _VX_SCHED_CMD_H */