1 /******************************************************************************
4 * System management operations. For use by node control stack.
6 * Copyright (c) 2002-2006, K Fraser
9 #ifndef __XEN_PUBLIC_SYSCTL_H__
10 #define __XEN_PUBLIC_SYSCTL_H__
12 #if !defined(__XEN__) && !defined(__XEN_TOOLS__)
13 #error "sysctl operations are intended for use by node control tools only"
19 #define XEN_SYSCTL_INTERFACE_VERSION 0x00000002
22 * Read console content from Xen buffer ring.
24 #define XEN_SYSCTL_readconsole 1
25 struct xen_sysctl_readconsole {
27 uint32_t clear; /* Non-zero -> clear after reading. */
28 XEN_GUEST_HANDLE(char) buffer; /* Buffer start */
29 /* IN/OUT variables. */
30 uint32_t count; /* In: Buffer size; Out: Used buffer size */
32 typedef struct xen_sysctl_readconsole xen_sysctl_readconsole_t;
33 DEFINE_XEN_GUEST_HANDLE(xen_sysctl_readconsole_t);
35 /* Get trace buffers machine base address */
36 #define XEN_SYSCTL_tbuf_op 2
37 struct xen_sysctl_tbuf_op {
39 #define XEN_SYSCTL_TBUFOP_get_info 0
40 #define XEN_SYSCTL_TBUFOP_set_cpu_mask 1
41 #define XEN_SYSCTL_TBUFOP_set_evt_mask 2
42 #define XEN_SYSCTL_TBUFOP_set_size 3
43 #define XEN_SYSCTL_TBUFOP_enable 4
44 #define XEN_SYSCTL_TBUFOP_disable 5
46 /* IN/OUT variables */
47 struct xenctl_cpumap cpu_mask;
53 typedef struct xen_sysctl_tbuf_op xen_sysctl_tbuf_op_t;
54 DEFINE_XEN_GUEST_HANDLE(xen_sysctl_tbuf_op_t);
57 * Get physical information about the host machine
59 #define XEN_SYSCTL_physinfo 3
60 struct xen_sysctl_physinfo {
61 uint32_t threads_per_core;
62 uint32_t cores_per_socket;
63 uint32_t sockets_per_node;
71 typedef struct xen_sysctl_physinfo xen_sysctl_physinfo_t;
72 DEFINE_XEN_GUEST_HANDLE(xen_sysctl_physinfo_t);
75 * Get the ID of the current scheduler.
77 #define XEN_SYSCTL_sched_id 4
78 struct xen_sysctl_sched_id {
82 typedef struct xen_sysctl_sched_id xen_sysctl_sched_id_t;
83 DEFINE_XEN_GUEST_HANDLE(xen_sysctl_sched_id_t);
85 /* Interface for controlling Xen software performance counters. */
86 #define XEN_SYSCTL_perfc_op 5
88 #define XEN_SYSCTL_PERFCOP_reset 1 /* Reset all counters to zero. */
89 #define XEN_SYSCTL_PERFCOP_query 2 /* Get perfctr information. */
90 struct xen_sysctl_perfc_desc {
91 char name[80]; /* name of perf counter */
92 uint32_t nr_vals; /* number of values for this counter */
94 typedef struct xen_sysctl_perfc_desc xen_sysctl_perfc_desc_t;
95 DEFINE_XEN_GUEST_HANDLE(xen_sysctl_perfc_desc_t);
96 typedef uint32_t xen_sysctl_perfc_val_t;
97 DEFINE_XEN_GUEST_HANDLE(xen_sysctl_perfc_val_t);
99 struct xen_sysctl_perfc_op {
101 uint32_t cmd; /* XEN_SYSCTL_PERFCOP_??? */
103 uint32_t nr_counters; /* number of counters description */
104 uint32_t nr_vals; /* number of values */
105 /* counter information (or NULL) */
106 XEN_GUEST_HANDLE(xen_sysctl_perfc_desc_t) desc;
107 /* counter values (or NULL) */
108 XEN_GUEST_HANDLE(xen_sysctl_perfc_val_t) val;
110 typedef struct xen_sysctl_perfc_op xen_sysctl_perfc_op_t;
111 DEFINE_XEN_GUEST_HANDLE(xen_sysctl_perfc_op_t);
113 #define XEN_SYSCTL_getdomaininfolist 6
114 struct xen_sysctl_getdomaininfolist {
116 domid_t first_domain;
117 uint32_t max_domains;
118 XEN_GUEST_HANDLE(xen_domctl_getdomaininfo_t) buffer;
120 uint32_t num_domains;
122 typedef struct xen_sysctl_getdomaininfolist xen_sysctl_getdomaininfolist_t;
123 DEFINE_XEN_GUEST_HANDLE(xen_sysctl_getdomaininfolist_t);
127 uint32_t interface_version; /* XEN_SYSCTL_INTERFACE_VERSION */
129 struct xen_sysctl_readconsole readconsole;
130 struct xen_sysctl_tbuf_op tbuf_op;
131 struct xen_sysctl_physinfo physinfo;
132 struct xen_sysctl_sched_id sched_id;
133 struct xen_sysctl_perfc_op perfc_op;
134 struct xen_sysctl_getdomaininfolist getdomaininfolist;
138 typedef struct xen_sysctl xen_sysctl_t;
139 DEFINE_XEN_GUEST_HANDLE(xen_sysctl_t);
141 #endif /* __XEN_PUBLIC_SYSCTL_H__ */
149 * indent-tabs-mode: nil