1 #ifndef __VKI_XEN_SYSCTL_H
2 #define __VKI_XEN_SYSCTL_H
5 * The sysctl interface is versioned via the interface_version
6 * field. This structures in this header supports sysctl interfaces:
8 * - 0x00000008: Xen 4.1
9 * - 0x00000009: Xen 4.2
10 * - 0x0000000a: Xen 4.3 & 4.4
11 * - 0x0000000b: Xen 4.5
13 * When adding a new subop be sure to include the variants used by all
14 * of the above, both here and in syswrap-xen.c
16 * Structs which are identical in all supported versions have no
17 * version suffix. Structs which do differ are defined multiple times
18 * and use the suffix of the latest version to contain that particular
22 #define VKI_XEN_SYSCTL_readconsole 1
23 #define VKI_XEN_SYSCTL_tbuf_op 2
24 #define VKI_XEN_SYSCTL_physinfo 3
25 #define VKI_XEN_SYSCTL_sched_id 4
26 #define VKI_XEN_SYSCTL_perfc_op 5
27 #define VKI_XEN_SYSCTL_getdomaininfolist 6
28 #define VKI_XEN_SYSCTL_debug_keys 7
29 #define VKI_XEN_SYSCTL_getcpuinfo 8
30 #define VKI_XEN_SYSCTL_availheap 9
31 #define VKI_XEN_SYSCTL_get_pmstat 10
32 #define VKI_XEN_SYSCTL_cpu_hotplug 11
33 #define VKI_XEN_SYSCTL_pm_op 12
34 #define VKI_XEN_SYSCTL_page_offline_op 14
35 #define VKI_XEN_SYSCTL_lockprof_op 15
36 #define VKI_XEN_SYSCTL_topologyinfo 16
37 #define VKI_XEN_SYSCTL_numainfo 17
38 #define VKI_XEN_SYSCTL_cpupool_op 18
39 #define VKI_XEN_SYSCTL_scheduler_op 19
40 #define VKI_XEN_SYSCTL_coverage_op 20
42 struct vki_xen_sysctl_readconsole
{
45 vki_uint8_t incremental
;
47 vki_uint8_t pad0
, pad1
;
50 * IN: Start index for consumption if @incremental.
51 * OUT: End index after consuming from the console.
54 VKI_XEN_GUEST_HANDLE_64(char) buffer
; /* IN */
58 * OUT: bytes written into buffer.
63 struct vki_xen_sysctl_getdomaininfolist_00000008
{
65 vki_xen_domid_t first_domain
;
66 vki_uint32_t max_domains
;
67 VKI_XEN_GUEST_HANDLE_64(vki_xen_domctl_getdomaininfo_00000007_t
) buffer
;
69 vki_uint32_t num_domains
;
72 struct vki_xen_sysctl_getdomaininfolist_00000009
{
74 vki_xen_domid_t first_domain
;
75 vki_uint32_t max_domains
;
76 VKI_XEN_GUEST_HANDLE_64(vki_xen_domctl_getdomaininfo_00000008_t
) buffer
;
78 vki_uint32_t num_domains
;
81 struct vki_xen_sysctl_getdomaininfolist_0000000a
{
83 vki_xen_domid_t first_domain
;
84 vki_uint32_t max_domains
;
85 VKI_XEN_GUEST_HANDLE_64(vki_xen_domctl_getdomaininfo_00000009_t
) buffer
;
87 vki_uint32_t num_domains
;
90 /* vki_xen_sysctl_getdomaininfolist_0000000b is the same as 0000000a */
92 #define VKI_XEN_SYSCTL_CPUPOOL_OP_CREATE 1 /* C */
93 #define VKI_XEN_SYSCTL_CPUPOOL_OP_DESTROY 2 /* D */
94 #define VKI_XEN_SYSCTL_CPUPOOL_OP_INFO 3 /* I */
95 #define VKI_XEN_SYSCTL_CPUPOOL_OP_ADDCPU 4 /* A */
96 #define VKI_XEN_SYSCTL_CPUPOOL_OP_RMCPU 5 /* R */
97 #define VKI_XEN_SYSCTL_CPUPOOL_OP_MOVEDOMAIN 6 /* M */
98 #define VKI_XEN_SYSCTL_CPUPOOL_OP_FREEINFO 7 /* F */
99 #define VKI_XEN_SYSCTL_CPUPOOL_PAR_ANY 0xFFFFFFFF
100 struct vki_xen_sysctl_cpupool_op
{
101 vki_uint32_t op
; /* IN */
102 vki_uint32_t cpupool_id
; /* IN: CDIARM OUT: CI */
103 vki_uint32_t sched_id
; /* IN: C OUT: I */
104 vki_uint32_t domid
; /* IN: M */
105 vki_uint32_t cpu
; /* IN: AR */
106 vki_uint32_t n_dom
; /* OUT: I */
107 struct vki_xenctl_bitmap cpumap
; /* OUT: IF */
110 struct vki_xen_sysctl_debug_keys
{
112 VKI_XEN_GUEST_HANDLE_64(char) keys
;
113 vki_uint32_t nr_keys
;
116 struct vki_xen_sysctl_topologyinfo
{
117 vki_uint32_t max_cpu_index
;
118 VKI_XEN_GUEST_HANDLE_64(vki_uint32
) cpu_to_core
;
119 VKI_XEN_GUEST_HANDLE_64(vki_uint32
) cpu_to_socket
;
120 VKI_XEN_GUEST_HANDLE_64(vki_uint32
) cpu_to_node
;
123 struct vki_xen_sysctl_numainfo
{
124 vki_uint32_t max_node_index
;
125 VKI_XEN_GUEST_HANDLE_64(vki_uint64
) node_to_memsize
;
126 VKI_XEN_GUEST_HANDLE_64(vki_uint64
) node_to_memfree
;
127 VKI_XEN_GUEST_HANDLE_64(vki_uint32
) node_to_node_distance
;
129 struct vki_xen_sysctl_physinfo_00000008
{
130 vki_uint32_t threads_per_core
;
131 vki_uint32_t cores_per_socket
;
132 vki_uint32_t nr_cpus
; /* # CPUs currently online */
133 vki_uint32_t max_cpu_id
; /* Largest possible CPU ID on this host */
134 vki_uint32_t nr_nodes
; /* # nodes currently online */
135 vki_uint32_t max_node_id
; /* Largest possible node ID on this host */
136 vki_uint32_t cpu_khz
;
137 vki_xen_uint64_aligned_t total_pages
;
138 vki_xen_uint64_aligned_t free_pages
;
139 vki_xen_uint64_aligned_t scrub_pages
;
140 vki_uint32_t hw_cap
[8];
142 vki_uint32_t capabilities
;
145 struct vki_xen_sysctl_physinfo_0000000a
{
146 vki_uint32_t threads_per_core
;
147 vki_uint32_t cores_per_socket
;
148 vki_uint32_t nr_cpus
; /* # CPUs currently online */
149 vki_uint32_t max_cpu_id
; /* Largest possible CPU ID on this host */
150 vki_uint32_t nr_nodes
; /* # nodes currently online */
151 vki_uint32_t max_node_id
; /* Largest possible node ID on this host */
152 vki_uint32_t cpu_khz
;
153 vki_xen_uint64_aligned_t total_pages
;
154 vki_xen_uint64_aligned_t free_pages
;
155 vki_xen_uint64_aligned_t scrub_pages
;
156 vki_xen_uint64_aligned_t outstanding_pages
;
157 vki_uint32_t hw_cap
[8];
159 vki_uint32_t capabilities
;
162 /* vki_xen_sysctl_physinfo_0000000b is the same as 0000000a */
164 struct vki_xen_sysctl_sched_id
{
166 vki_uint32_t sched_id
;
169 struct vki_xen_sysctl
{
171 vki_uint32_t interface_version
; /* XEN_SYSCTL_INTERFACE_VERSION */
173 struct vki_xen_sysctl_readconsole readconsole
;
174 //struct vki_xen_sysctl_tbuf_op tbuf_op;
175 struct vki_xen_sysctl_physinfo_00000008 physinfo_00000008
;
176 struct vki_xen_sysctl_physinfo_0000000a physinfo_0000000a
;
177 struct vki_xen_sysctl_topologyinfo topologyinfo
;
178 struct vki_xen_sysctl_numainfo numainfo
;
179 struct vki_xen_sysctl_sched_id sched_id
;
180 //struct vki_xen_sysctl_perfc_op perfc_op;
181 struct vki_xen_sysctl_getdomaininfolist_00000008 getdomaininfolist_00000008
;
182 struct vki_xen_sysctl_getdomaininfolist_00000009 getdomaininfolist_00000009
;
183 struct vki_xen_sysctl_getdomaininfolist_0000000a getdomaininfolist_0000000a
;
184 struct vki_xen_sysctl_debug_keys debug_keys
;
185 //struct vki_xen_sysctl_getcpuinfo getcpuinfo;
186 //struct vki_xen_sysctl_availheap availheap;
187 //struct vki_xen_sysctl_get_pmstat get_pmstat;
188 //struct vki_xen_sysctl_cpu_hotplug cpu_hotplug;
189 //struct vki_xen_sysctl_pm_op pm_op;
190 //struct vki_xen_sysctl_page_offline_op page_offline;
191 //struct vki_xen_sysctl_lockprof_op lockprof_op;
192 struct vki_xen_sysctl_cpupool_op cpupool_op
;
193 //struct vki_xen_sysctl_scheduler_op scheduler_op;
194 //struct vki_xen_sysctl_coverage_op coverage_op;
196 vki_uint8_t pad
[128];
200 #endif // __VKI_XEN_SYSCTL_H
202 /*--------------------------------------------------------------------*/
204 /*--------------------------------------------------------------------*/