diff options
author | Mark Kettenis <kettenis@cvs.openbsd.org> | 2012-11-04 17:37:11 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@cvs.openbsd.org> | 2012-11-04 17:37:11 +0000 |
commit | 1b29b80f1b80bfb435c88dcf60b653b0e896b5a3 (patch) | |
tree | 0f2b4a2380069221fd84806c67738b5944bcc457 /usr.sbin/ldomd/hvctl.h | |
parent | 3bf436171f2388c145941d3b673ce530005dd5bb (diff) |
Split out hvctl protocol definitions in a seperate header file.
Diffstat (limited to 'usr.sbin/ldomd/hvctl.h')
-rw-r--r-- | usr.sbin/ldomd/hvctl.h | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/usr.sbin/ldomd/hvctl.h b/usr.sbin/ldomd/hvctl.h new file mode 100644 index 00000000000..4da31b2a5c3 --- /dev/null +++ b/usr.sbin/ldomd/hvctl.h @@ -0,0 +1,128 @@ +/* $OpenBSD: hvctl.h,v 1.1 2012/11/04 17:37:10 kettenis Exp $ */ + +/* + * Copyright (c) 2012 Mark Kettenis + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +struct hv_io { + uint64_t hi_cookie; + void *hi_addr; + size_t hi_len; +}; + +#define HVIOCREAD _IOW('h', 0, struct hv_io) +#define HVIOCWRITE _IOW('h', 1, struct hv_io) + +#define SIS_NORMAL 0x1 +#define SIS_TRANSITION 0x2 +#define SOFT_STATE_SIZE 32 + +#define GUEST_STATE_STOPPED 0x0 +#define GUEST_STATE_RESETTING 0x1 +#define GUEST_STATE_NORMAL 0x2 +#define GUEST_STATE_SUSPENDED 0x3 +#define GUEST_STATE_EXITING 0x4 +#define GUEST_STATE_UNCONFIGURED 0xff + +#define HVCTL_RES_STATUS_DATA_SIZE 40 + +struct hvctl_header { + uint16_t op; + uint16_t seq; + uint16_t chksum; + uint16_t status; +}; + +struct hvctl_hello { + uint16_t major; + uint16_t minor; +}; + +struct hvctl_challenge { + uint64_t code; +}; + +struct hvctl_hvconfig { + uint64_t hv_membase; + uint64_t hv_memsize; + uint64_t hvmdp; + uint64_t del_reconf_hvmdp; + uint32_t del_reconf_gid; +}; + +struct hvctl_reconfig { + uint64_t hvmdp; + uint32_t guestid; +}; + +struct hvctl_guest_op { + uint32_t guestid; + uint32_t code; +}; + +struct hvctl_res_status { + uint32_t res; + uint32_t resid; + uint32_t infoid; + uint32_t code; + uint8_t data[HVCTL_RES_STATUS_DATA_SIZE]; +}; + +struct hvctl_rs_guest_state { + uint64_t state; +}; + +struct hvctl_rs_guest_softstate { + uint8_t soft_state; + char soft_state_str[SOFT_STATE_SIZE]; +}; + +struct hvctl_rs_guest_util { + uint64_t lifespan; + uint64_t wallclock_delta; + uint64_t active_delta; + uint64_t stopped_cycles; + uint64_t yielded_cycles; +}; + +struct hvctl_msg { + struct hvctl_header hdr; + union { + struct hvctl_hello hello; + struct hvctl_challenge clnge; + struct hvctl_hvconfig hvcnf; + struct hvctl_reconfig reconfig; + struct hvctl_guest_op guestop; + struct hvctl_res_status resstat; + } msg; +}; + +#define HVCTL_OP_HELLO 0 +#define HVCTL_OP_CHALLENGE 1 +#define HVCTL_OP_RESPONSE 2 +#define HVCTL_OP_GET_HVCONFIG 3 +#define HVCTL_OP_RECONFIGURE 4 +#define HVCTL_OP_GUEST_START 5 +#define HVCTL_OP_GUEST_STOP 6 +#define HVCTL_OP_GET_RES_STAT 11 + +#define HVCTL_ST_OK 0 + +#define HVCTL_RES_GUEST 0 + +#define HVCTL_INFO_GUEST_STATE 0 +#define HVCTL_INFO_GUEST_SOFT_STATE 1 +#define HVCTL_INFO_GUEST_UTILISATION 3 + |