aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxc/xc.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/libxc/xc.h')
-rw-r--r--tools/libxc/xc.h203
1 files changed, 203 insertions, 0 deletions
diff --git a/tools/libxc/xc.h b/tools/libxc/xc.h
new file mode 100644
index 0000000000..f9692607bd
--- /dev/null
+++ b/tools/libxc/xc.h
@@ -0,0 +1,203 @@
+/******************************************************************************
+ * xc.h
+ *
+ * A library for low-level access to the Xen control interfaces.
+ *
+ * Copyright (c) 2003, K A Fraser.
+ */
+
+#ifndef __XC_H__
+#define __XC_H__
+
+typedef unsigned char u8;
+typedef unsigned short u16;
+typedef unsigned long u32;
+typedef unsigned long long u64;
+typedef signed char s8;
+typedef signed short s16;
+typedef signed long s32;
+typedef signed long long s64;
+
+/* Obtain or relinquish a handle on the 'xc' library. */
+int xc_interface_open(void);
+int xc_interface_close(int xc_handle);
+
+typedef struct {
+ u32 domid;
+ unsigned int cpu;
+ unsigned int dying:1, crashed:1, shutdown:1,
+ paused:1, blocked:1, running:1;
+ unsigned int shutdown_reason; /* only meaningful if shutdown==1 */
+ unsigned long nr_pages;
+ unsigned long shared_info_frame;
+ u64 cpu_time;
+#define XC_DOMINFO_MAXNAME 16
+ char name[XC_DOMINFO_MAXNAME];
+ unsigned long max_memkb;
+} xc_dominfo_t;
+
+typedef struct xc_shadow_control_stats_st
+{
+ unsigned long fault_count;
+ unsigned long dirty_count;
+ unsigned long dirty_net_count;
+ unsigned long dirty_block_count;
+} xc_shadow_control_stats_t;
+
+int xc_domain_create(int xc_handle,
+ unsigned int mem_kb,
+ const char *name,
+ int cpu,
+ u32 *pdomid);
+int xc_domain_pause(int xc_handle,
+ u32 domid);
+int xc_domain_unpause(int xc_handle,
+ u32 domid);
+int xc_domain_destroy(int xc_handle,
+ u32 domid);
+int xc_domain_pincpu(int xc_handle,
+ u32 domid,
+ int cpu);
+int xc_domain_getinfo(int xc_handle,
+ u32 first_domid,
+ unsigned int max_doms,
+ xc_dominfo_t *info);
+
+int xc_shadow_control(int xc_handle,
+ u32 domid,
+ unsigned int sop,
+ unsigned long *dirty_bitmap,
+ unsigned long pages,
+ xc_shadow_control_stats_t *stats);
+
+
+#define XCFLAGS_VERBOSE 1
+#define XCFLAGS_LIVE 2
+#define XCFLAGS_DEBUG 4
+
+struct XcIOContext;
+int xc_linux_save(int xc_handle, struct XcIOContext *ioctxt);
+int xc_linux_restore(int xc_handle, struct XcIOContext *ioctxt);
+
+int xc_linux_build(int xc_handle,
+ u32 domid,
+ const char *image_name,
+ const char *ramdisk_name,
+ const char *cmdline,
+ unsigned int control_evtchn,
+ unsigned long flags);
+
+int xc_netbsd_build(int xc_handle,
+ u32 domid,
+ const char *image_name,
+ const char *cmdline,
+ unsigned int control_evtchn);
+
+int xc_bvtsched_global_set(int xc_handle,
+ unsigned long ctx_allow);
+
+int xc_bvtsched_domain_set(int xc_handle,
+ u32 domid,
+ unsigned long mcuadv,
+ unsigned long warp,
+ unsigned long warpl,
+ unsigned long warpu);
+
+int xc_bvtsched_global_get(int xc_handle,
+ unsigned long *ctx_allow);
+
+int xc_bvtsched_domain_get(int xc_handle,
+ u32 domid,
+ unsigned long *mcuadv,
+ unsigned long *warp,
+ unsigned long *warpl,
+ unsigned long *warpu);
+
+int xc_atropos_domain_set(int xc_handle,
+ u32 domid,
+ u64 period, u64 slice, u64 latency,
+ int xtratime);
+
+int xc_atropos_domain_get(int xc_handle,
+ u32 domid,
+ u64* period, u64 *slice, u64 *latency,
+ int *xtratime);
+
+int xc_rrobin_global_set(int xc_handle, u64 slice);
+
+int xc_rrobin_global_get(int xc_handle, u64 *slice);
+
+#define DOMID_SELF (0x7FFFFFFEU)
+
+typedef struct {
+#define EVTCHNSTAT_closed 0 /* Chennel is not in use. */
+#define EVTCHNSTAT_unbound 1 /* Channel is not bound to a source. */
+#define EVTCHNSTAT_interdomain 2 /* Channel is connected to remote domain. */
+#define EVTCHNSTAT_pirq 3 /* Channel is bound to a phys IRQ line. */
+#define EVTCHNSTAT_virq 4 /* Channel is bound to a virtual IRQ line */
+ int status;
+ union {
+ struct {
+ u32 dom;
+ int port;
+ } interdomain;
+ int pirq;
+ int virq;
+ } u;
+} xc_evtchn_status_t;
+
+int xc_evtchn_bind_interdomain(int xc_handle,
+ u32 dom1, /* may be DOMID_SELF */
+ u32 dom2, /* may be DOMID_SELF */
+ int *port1,
+ int *port2);
+int xc_evtchn_bind_virq(int xc_handle,
+ int virq,
+ int *port);
+int xc_evtchn_close(int xc_handle,
+ u32 dom, /* may be DOMID_SELF */
+ int port);
+int xc_evtchn_send(int xc_handle,
+ int local_port);
+int xc_evtchn_status(int xc_handle,
+ u32 dom, /* may be DOMID_SELF */
+ int port,
+ xc_evtchn_status_t *status);
+
+int xc_physdev_pci_access_modify(int xc_handle,
+ u32 domid,
+ int bus,
+ int dev,
+ int func,
+ int enable);
+
+int xc_readconsolering(int xc_handle,
+ char *str,
+ unsigned int max_chars,
+ int clear);
+
+typedef struct {
+ int ht_per_core;
+ int cores;
+ unsigned long total_pages;
+ unsigned long free_pages;
+ unsigned long cpu_khz;
+} xc_physinfo_t;
+
+int xc_physinfo(int xc_handle,
+ xc_physinfo_t *info);
+
+int xc_domain_setname(int xc_handle,
+ u32 domid,
+ char *name);
+
+int xc_domain_setinitialmem(int xc_handle,
+ u32 domid,
+ unsigned int initial_memkb);
+
+int xc_domain_setmaxmem(int xc_handle,
+ u32 domid,
+ unsigned int max_memkb);
+
+
+#endif /* __XC_H__ */