Xen Test Framework
vcpu.h
Go to the documentation of this file.
1/*
2 * Xen public VCPU hypercall interface
3 */
4#ifndef XEN_PUBLIC_VCPU_H
5#define XEN_PUBLIC_VCPU_H
6
7#include "xen.h"
8
9/*
10 * Prototype for this hypercall is:
11 * long vcpu_op(unsigned int cmd, unsigned int vcpuid, void *extra_args)
12 * @cmd == VCPUOP_??? (VCPU operation).
13 * @vcpuid == VCPU to operate on.
14 * @extra_args == Operation-specific extra arguments (NULL if none).
15 */
16
17/*
18 * Initialise a VCPU. Each VCPU can be initialised only once. A
19 * newly-initialised VCPU will not run until it is brought up by VCPUOP_up.
20 *
21 * @extra_arg == pointer to vcpu_guest_context structure containing initial
22 * state for the VCPU.
23 */
24#define VCPUOP_initialise 0
25
26/*
27 * Bring up a VCPU. This makes the VCPU runnable. This operation will fail
28 * if the VCPU has not been initialised (VCPUOP_initialise).
29 */
30#define VCPUOP_up 1
31
32/*
33 * Bring down a VCPU (i.e., make it non-runnable).
34 * There are a few caveats that callers should observe:
35 * 1. This operation may return, and VCPU_is_up may return false, before the
36 * VCPU stops running (i.e., the command is asynchronous). It is a good
37 * idea to ensure that the VCPU has entered a non-critical loop before
38 * bringing it down. Alternatively, this operation is guaranteed
39 * synchronous if invoked by the VCPU itself.
40 * 2. After a VCPU is initialised, there is currently no way to drop all its
41 * references to domain memory. Even a VCPU that is down still holds
42 * memory references via its pagetable base pointer and GDT. It is good
43 * practise to move a VCPU onto an 'idle' or default page table, LDT and
44 * GDT before bringing it down.
45 */
46#define VCPUOP_down 2
47
48/* Returns 1 if the given VCPU is up. */
49#define VCPUOP_is_up 3
50
51#endif /* XEN_PUBLIC_VCPU_H */
52
53/*
54 * Local variables:
55 * mode: C
56 * c-file-style: "BSD"
57 * c-basic-offset: 4
58 * tab-width: 4
59 * indent-tabs-mode: nil
60 * End:
61 */