diff options
Diffstat (limited to 'include/xen/interface/sched.h')
-rw-r--r-- | include/xen/interface/sched.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/include/xen/interface/sched.h b/include/xen/interface/sched.h new file mode 100644 index 000000000000..5fec575a800a --- /dev/null +++ b/include/xen/interface/sched.h | |||
@@ -0,0 +1,77 @@ | |||
1 | /****************************************************************************** | ||
2 | * sched.h | ||
3 | * | ||
4 | * Scheduler state interactions | ||
5 | * | ||
6 | * Copyright (c) 2005, Keir Fraser <keir@xensource.com> | ||
7 | */ | ||
8 | |||
9 | #ifndef __XEN_PUBLIC_SCHED_H__ | ||
10 | #define __XEN_PUBLIC_SCHED_H__ | ||
11 | |||
12 | #include "event_channel.h" | ||
13 | |||
14 | /* | ||
15 | * The prototype for this hypercall is: | ||
16 | * long sched_op_new(int cmd, void *arg) | ||
17 | * @cmd == SCHEDOP_??? (scheduler operation). | ||
18 | * @arg == Operation-specific extra argument(s), as described below. | ||
19 | * | ||
20 | * **NOTE**: | ||
21 | * Versions of Xen prior to 3.0.2 provide only the following legacy version | ||
22 | * of this hypercall, supporting only the commands yield, block and shutdown: | ||
23 | * long sched_op(int cmd, unsigned long arg) | ||
24 | * @cmd == SCHEDOP_??? (scheduler operation). | ||
25 | * @arg == 0 (SCHEDOP_yield and SCHEDOP_block) | ||
26 | * == SHUTDOWN_* code (SCHEDOP_shutdown) | ||
27 | */ | ||
28 | |||
29 | /* | ||
30 | * Voluntarily yield the CPU. | ||
31 | * @arg == NULL. | ||
32 | */ | ||
33 | #define SCHEDOP_yield 0 | ||
34 | |||
35 | /* | ||
36 | * Block execution of this VCPU until an event is received for processing. | ||
37 | * If called with event upcalls masked, this operation will atomically | ||
38 | * reenable event delivery and check for pending events before blocking the | ||
39 | * VCPU. This avoids a "wakeup waiting" race. | ||
40 | * @arg == NULL. | ||
41 | */ | ||
42 | #define SCHEDOP_block 1 | ||
43 | |||
44 | /* | ||
45 | * Halt execution of this domain (all VCPUs) and notify the system controller. | ||
46 | * @arg == pointer to sched_shutdown structure. | ||
47 | */ | ||
48 | #define SCHEDOP_shutdown 2 | ||
49 | struct sched_shutdown { | ||
50 | unsigned int reason; /* SHUTDOWN_* */ | ||
51 | }; | ||
52 | DEFINE_GUEST_HANDLE_STRUCT(sched_shutdown); | ||
53 | |||
54 | /* | ||
55 | * Poll a set of event-channel ports. Return when one or more are pending. An | ||
56 | * optional timeout may be specified. | ||
57 | * @arg == pointer to sched_poll structure. | ||
58 | */ | ||
59 | #define SCHEDOP_poll 3 | ||
60 | struct sched_poll { | ||
61 | GUEST_HANDLE(evtchn_port_t) ports; | ||
62 | unsigned int nr_ports; | ||
63 | uint64_t timeout; | ||
64 | }; | ||
65 | DEFINE_GUEST_HANDLE_STRUCT(sched_poll); | ||
66 | |||
67 | /* | ||
68 | * Reason codes for SCHEDOP_shutdown. These may be interpreted by control | ||
69 | * software to determine the appropriate action. For the most part, Xen does | ||
70 | * not care about the shutdown code. | ||
71 | */ | ||
72 | #define SHUTDOWN_poweroff 0 /* Domain exited normally. Clean up and kill. */ | ||
73 | #define SHUTDOWN_reboot 1 /* Clean up, kill, and then restart. */ | ||
74 | #define SHUTDOWN_suspend 2 /* Clean up, save suspend info, kill. */ | ||
75 | #define SHUTDOWN_crash 3 /* Tell controller we've crashed. */ | ||
76 | |||
77 | #endif /* __XEN_PUBLIC_SCHED_H__ */ | ||