File: vki-xen-sysctl.h

package info (click to toggle)
valgrind 1%3A3.10.0-4
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 97,452 kB
  • ctags: 62,380
  • sloc: ansic: 589,429; xml: 21,096; exp: 8,751; cpp: 7,366; asm: 6,526; perl: 5,656; sh: 5,334; makefile: 4,946; haskell: 195
file content (199 lines) | stat: -rw-r--r-- 7,808 bytes parent folder | download | duplicates (2)
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                                                          ---*/
/*--------------------------------------------------------------------*/