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