Initial revision
[linux-2.6.git] / include / xen / interface / sched_ctl.h
1 /******************************************************************************
2  * Generic scheduler control interface.
3  *
4  * Mark Williamson, (C) 2004 Intel Research Cambridge
5  */
6
7 #ifndef __XEN_PUBLIC_SCHED_CTL_H__
8 #define __XEN_PUBLIC_SCHED_CTL_H__
9
10 /* Scheduler types. */
11 #define SCHED_BVT      0
12 #define SCHED_SEDF     4
13 #define SCHED_CREDIT   5
14
15 /* Set or get info? */
16 #define SCHED_INFO_PUT 0
17 #define SCHED_INFO_GET 1
18
19 /*
20  * Generic scheduler control command - used to adjust system-wide scheduler
21  * parameters
22  */
23 struct sched_ctl_cmd {
24     uint32_t sched_id;
25     uint32_t direction;
26     union {
27         struct bvt_ctl {
28             uint32_t ctx_allow;
29         } bvt;
30     } u;
31 };
32
33 struct sched_adjdom_cmd {
34     uint32_t sched_id;
35     uint32_t direction;
36     domid_t  domain;
37     union {
38         struct bvt_adjdom {
39             uint32_t mcu_adv;      /* mcu advance: inverse of weight */
40             uint32_t warpback;     /* warp? */
41             int32_t  warpvalue;    /* warp value */
42             int64_t  warpl;        /* warp limit */
43             int64_t  warpu;        /* unwarp time requirement */
44         } bvt;
45         struct sedf_adjdom {
46             uint64_t period;
47             uint64_t slice;
48             uint64_t latency;
49             uint32_t extratime;
50             uint32_t weight;
51         } sedf;
52         struct sched_credit_adjdom {
53             uint16_t weight;
54             uint16_t cap;
55         } credit;
56     } u;
57 };
58
59 #endif /* __XEN_PUBLIC_SCHED_CTL_H__ */
60
61 /*
62  * Local variables:
63  * mode: C
64  * c-set-style: "BSD"
65  * c-basic-offset: 4
66  * tab-width: 4
67  * indent-tabs-mode: nil
68  * End:
69  */