direct-io.hg

annotate tools/libxc/xc.h @ 2590:98bdf2c88015

bitkeeper revision 1.1159.1.201 (41600e1fkVMoQU0dVgk1h6vT502hEg)

Merge
author iap10@labyrinth.cl.cam.ac.uk
date Sun Oct 03 14:35:11 2004 +0000 (2004-10-03)
parents 875c25208085 a15ab016f0c6
children c084a63b2b64
rev   line source
mjw@1623 1 /******************************************************************************
mjw@1623 2 * xc.h
mjw@1623 3 *
mjw@1623 4 * A library for low-level access to the Xen control interfaces.
mjw@1623 5 *
mjw@1623 6 * Copyright (c) 2003, K A Fraser.
mjw@1623 7 */
mjw@1623 8
mjw@1623 9 #ifndef __XC_H__
mjw@1623 10 #define __XC_H__
mjw@1623 11
mjw@1623 12 typedef unsigned char u8;
mjw@1623 13 typedef unsigned short u16;
mjw@1623 14 typedef unsigned long u32;
mjw@1623 15 typedef unsigned long long u64;
mjw@1623 16 typedef signed char s8;
mjw@1623 17 typedef signed short s16;
mjw@1623 18 typedef signed long s32;
mjw@1623 19 typedef signed long long s64;
mjw@1623 20
mjw@1623 21 /* Obtain or relinquish a handle on the 'xc' library. */
mjw@1623 22 int xc_interface_open(void);
mjw@1623 23 int xc_interface_close(int xc_handle);
mjw@1623 24
mjw@1623 25 typedef struct {
mjw@1623 26 u32 domid;
mjw@1623 27 unsigned int cpu;
mjw@1623 28 unsigned int dying:1, crashed:1, shutdown:1,
mjw@1623 29 paused:1, blocked:1, running:1;
mjw@1623 30 unsigned int shutdown_reason; /* only meaningful if shutdown==1 */
mjw@1623 31 unsigned long nr_pages;
mjw@1623 32 unsigned long shared_info_frame;
mjw@1623 33 u64 cpu_time;
mjw@1623 34 #define XC_DOMINFO_MAXNAME 16
mjw@1623 35 char name[XC_DOMINFO_MAXNAME];
mjw@1623 36 unsigned long max_memkb;
mjw@1623 37 } xc_dominfo_t;
mjw@1623 38
mjw@1623 39 typedef struct xc_shadow_control_stats_st
mjw@1623 40 {
mjw@1623 41 unsigned long fault_count;
mjw@1623 42 unsigned long dirty_count;
mjw@1623 43 unsigned long dirty_net_count;
mjw@1623 44 unsigned long dirty_block_count;
mjw@1623 45 } xc_shadow_control_stats_t;
mjw@1623 46
mjw@1623 47 int xc_domain_create(int xc_handle,
mjw@1623 48 unsigned int mem_kb,
mjw@1623 49 const char *name,
mjw@1623 50 int cpu,
gm281@2236 51 float cpu_weight,
mjw@1623 52 u32 *pdomid);
mjw@1623 53 int xc_domain_pause(int xc_handle,
mjw@1623 54 u32 domid);
mjw@1623 55 int xc_domain_unpause(int xc_handle,
mjw@1623 56 u32 domid);
mjw@1623 57 int xc_domain_destroy(int xc_handle,
mjw@1623 58 u32 domid);
mjw@1623 59 int xc_domain_pincpu(int xc_handle,
mjw@1623 60 u32 domid,
mjw@1623 61 int cpu);
mjw@1623 62 int xc_domain_getinfo(int xc_handle,
mjw@1623 63 u32 first_domid,
mjw@1623 64 unsigned int max_doms,
mjw@1623 65 xc_dominfo_t *info);
gm281@2236 66 int xc_domain_setcpuweight(int xc_handle,
gm281@2236 67 u32 domid,
gm281@2236 68 float weight);
mjw@1623 69
mjw@1623 70 int xc_shadow_control(int xc_handle,
mjw@1623 71 u32 domid,
mjw@1623 72 unsigned int sop,
mjw@1623 73 unsigned long *dirty_bitmap,
mjw@1623 74 unsigned long pages,
mjw@1623 75 xc_shadow_control_stats_t *stats);
mjw@1623 76
mjw@1623 77
mjw@2574 78 #define XCFLAGS_VERBOSE 1
mjw@2574 79 #define XCFLAGS_LIVE 2
mjw@2574 80 #define XCFLAGS_DEBUG 4
mjw@2574 81 #define XCFLAGS_CONFIGURE 8
mjw@1623 82
mjw@1623 83 struct XcIOContext;
mjw@1623 84 int xc_linux_save(int xc_handle, struct XcIOContext *ioctxt);
mjw@1623 85 int xc_linux_restore(int xc_handle, struct XcIOContext *ioctxt);
mjw@1623 86
mjw@1623 87 int xc_linux_build(int xc_handle,
mjw@1623 88 u32 domid,
mjw@1623 89 const char *image_name,
mjw@1623 90 const char *ramdisk_name,
mjw@1623 91 const char *cmdline,
mjw@1623 92 unsigned int control_evtchn,
mjw@1623 93 unsigned long flags);
mjw@1623 94
mjw@1623 95 int xc_netbsd_build(int xc_handle,
mjw@1623 96 u32 domid,
mjw@1623 97 const char *image_name,
mjw@1623 98 const char *cmdline,
mjw@1623 99 unsigned int control_evtchn);
mjw@1623 100
mjw@1623 101 int xc_bvtsched_global_set(int xc_handle,
mjw@1623 102 unsigned long ctx_allow);
mjw@1623 103
mjw@1623 104 int xc_bvtsched_domain_set(int xc_handle,
mjw@1623 105 u32 domid,
gm281@2058 106 u32 mcuadv,
gm281@2058 107 int warpback,
gm281@2058 108 s32 warpvalue,
gm281@2058 109 long long warpl,
gm281@2058 110 long long warpu);
mjw@1623 111
mjw@1623 112 int xc_bvtsched_global_get(int xc_handle,
mjw@1623 113 unsigned long *ctx_allow);
mjw@1623 114
mjw@1623 115 int xc_bvtsched_domain_get(int xc_handle,
mjw@1623 116 u32 domid,
gm281@2058 117 u32 *mcuadv,
gm281@2058 118 int *warpback,
gm281@2058 119 s32 *warpvalue,
gm281@2058 120 long long *warpl,
gm281@2058 121 long long *warpu);
mjw@1623 122
gm281@1704 123 int xc_fbvtsched_global_set(int xc_handle,
gm281@1704 124 unsigned long ctx_allow);
gm281@1704 125
gm281@1704 126 int xc_fbvtsched_domain_set(int xc_handle,
gm281@1704 127 u32 domid,
gm281@1704 128 unsigned long mcuadv,
gm281@1704 129 unsigned long warp,
gm281@1704 130 unsigned long warpl,
gm281@1704 131 unsigned long warpu);
gm281@1704 132
gm281@1704 133 int xc_fbvtsched_global_get(int xc_handle,
gm281@1704 134 unsigned long *ctx_allow);
gm281@1704 135
gm281@1704 136 int xc_fbvtsched_domain_get(int xc_handle,
gm281@1704 137 u32 domid,
gm281@1704 138 unsigned long *mcuadv,
gm281@1704 139 unsigned long *warp,
gm281@1704 140 unsigned long *warpl,
gm281@1704 141 unsigned long *warpu);
gm281@1704 142
mjw@1623 143 int xc_atropos_domain_set(int xc_handle,
mjw@1623 144 u32 domid,
mjw@1623 145 u64 period, u64 slice, u64 latency,
mjw@1623 146 int xtratime);
mjw@1623 147
mjw@1623 148 int xc_atropos_domain_get(int xc_handle,
mjw@1623 149 u32 domid,
mjw@1623 150 u64* period, u64 *slice, u64 *latency,
mjw@1623 151 int *xtratime);
mjw@1623 152
mjw@1623 153 int xc_rrobin_global_set(int xc_handle, u64 slice);
mjw@1623 154
mjw@1623 155 int xc_rrobin_global_get(int xc_handle, u64 *slice);
mjw@1623 156
kaf24@2276 157 #define DOMID_SELF (0x7FF0U)
kaf24@2298 158 #define DOMID_IO (0x7FF1U)
kaf24@2298 159 #define DOMID_XEN (0x7FF2U)
mjw@1623 160
mjw@1623 161 typedef struct {
mjw@1623 162 #define EVTCHNSTAT_closed 0 /* Chennel is not in use. */
mjw@1623 163 #define EVTCHNSTAT_unbound 1 /* Channel is not bound to a source. */
mjw@1623 164 #define EVTCHNSTAT_interdomain 2 /* Channel is connected to remote domain. */
mjw@1623 165 #define EVTCHNSTAT_pirq 3 /* Channel is bound to a phys IRQ line. */
mjw@1623 166 #define EVTCHNSTAT_virq 4 /* Channel is bound to a virtual IRQ line */
mjw@1623 167 int status;
mjw@1623 168 union {
mjw@1623 169 struct {
mjw@1623 170 u32 dom;
mjw@1623 171 int port;
mjw@1623 172 } interdomain;
mjw@1623 173 int pirq;
mjw@1623 174 int virq;
mjw@1623 175 } u;
mjw@1623 176 } xc_evtchn_status_t;
mjw@1623 177
mjw@1623 178 int xc_evtchn_bind_interdomain(int xc_handle,
mjw@1623 179 u32 dom1, /* may be DOMID_SELF */
mjw@1623 180 u32 dom2, /* may be DOMID_SELF */
mjw@1623 181 int *port1,
mjw@1623 182 int *port2);
mjw@1623 183 int xc_evtchn_bind_virq(int xc_handle,
mjw@1623 184 int virq,
mjw@1623 185 int *port);
mjw@1623 186 int xc_evtchn_close(int xc_handle,
mjw@1623 187 u32 dom, /* may be DOMID_SELF */
mjw@1623 188 int port);
mjw@1623 189 int xc_evtchn_send(int xc_handle,
mjw@1623 190 int local_port);
mjw@1623 191 int xc_evtchn_status(int xc_handle,
mjw@1623 192 u32 dom, /* may be DOMID_SELF */
mjw@1623 193 int port,
mjw@1623 194 xc_evtchn_status_t *status);
mjw@1623 195
mjw@1623 196 int xc_physdev_pci_access_modify(int xc_handle,
mjw@1623 197 u32 domid,
mjw@1623 198 int bus,
mjw@1623 199 int dev,
mjw@1623 200 int func,
mjw@1623 201 int enable);
mjw@1623 202
mjw@1623 203 int xc_readconsolering(int xc_handle,
mjw@1623 204 char *str,
mjw@1623 205 unsigned int max_chars,
mjw@1623 206 int clear);
mjw@1623 207
mjw@1623 208 typedef struct {
mjw@1623 209 int ht_per_core;
mjw@1623 210 int cores;
mjw@1623 211 unsigned long total_pages;
mjw@1623 212 unsigned long free_pages;
mjw@1623 213 unsigned long cpu_khz;
mjw@1623 214 } xc_physinfo_t;
mjw@1623 215
mjw@1623 216 int xc_physinfo(int xc_handle,
mjw@1623 217 xc_physinfo_t *info);
mjw@1623 218
gm281@2236 219 int xc_sched_id(int xc_handle,
gm281@2236 220 int *sched_id);
gm281@2236 221
mjw@1623 222 int xc_domain_setname(int xc_handle,
mjw@1623 223 u32 domid,
mjw@1623 224 char *name);
mjw@1623 225
mjw@1623 226 int xc_domain_setinitialmem(int xc_handle,
mjw@1623 227 u32 domid,
mjw@1623 228 unsigned int initial_memkb);
mjw@1623 229
mjw@1623 230 int xc_domain_setmaxmem(int xc_handle,
mjw@1623 231 u32 domid,
mjw@1623 232 unsigned int max_memkb);
mjw@1623 233
cl349@2449 234 int xc_domain_setvmassist(int xc_handle,
cl349@2449 235 u32 domid,
cl349@2449 236 unsigned int cmd,
cl349@2449 237 unsigned int type);
cl349@2449 238
mjw@1623 239
iap10@2325 240 void *xc_map_foreign_range(int xc_handle, u32 dom,
iap10@2325 241 int size, int prot,
iap10@2325 242 unsigned long mfn );
iap10@2325 243
iap10@2325 244 void *xc_map_foreign_batch(int xc_handle, u32 dom, int prot,
iap10@2325 245 unsigned long *arr, int num );
iap10@2325 246
mjw@1623 247 #endif /* __XC_H__ */