Home | History | Annotate | Line # | Download | only in vmt
      1  1.1  ryo /* $NetBSD: vmtreg.h,v 1.1 2020/10/27 08:57:11 ryo Exp $ */
      2  1.1  ryo /* NetBSD: vmt.c,v 1.15 2016/11/10 03:32:04 ozaki-r Exp */
      3  1.1  ryo /* $OpenBSD: vmt.c,v 1.11 2011/01/27 21:29:25 dtucker Exp $ */
      4  1.1  ryo 
      5  1.1  ryo /*
      6  1.1  ryo  * Copyright (c) 2007 David Crawshaw <david (at) zentus.com>
      7  1.1  ryo  * Copyright (c) 2008 David Gwynne <dlg (at) openbsd.org>
      8  1.1  ryo  *
      9  1.1  ryo  * Permission to use, copy, modify, and distribute this software for any
     10  1.1  ryo  * purpose with or without fee is hereby granted, provided that the above
     11  1.1  ryo  * copyright notice and this permission notice appear in all copies.
     12  1.1  ryo  *
     13  1.1  ryo  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
     14  1.1  ryo  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
     15  1.1  ryo  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
     16  1.1  ryo  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
     17  1.1  ryo  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
     18  1.1  ryo  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
     19  1.1  ryo  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     20  1.1  ryo  */
     21  1.1  ryo 
     22  1.1  ryo #ifndef _DEV_VMT_VMTREG_H_
     23  1.1  ryo #define _DEV_VMT_VMTREG_H_
     24  1.1  ryo 
     25  1.1  ryo /* OS name to report to host */
     26  1.1  ryo #ifdef __i386__
     27  1.1  ryo #define VM_OS_NAME	"other"
     28  1.1  ryo #else
     29  1.1  ryo #define VM_OS_NAME	"other-64"
     30  1.1  ryo #endif
     31  1.1  ryo 
     32  1.1  ryo /* "The" magic number, always occupies the EAX register. */
     33  1.1  ryo #define VM_MAGIC			0x564D5868
     34  1.1  ryo 
     35  1.1  ryo /* Port numbers, passed on EDX.LOW . */
     36  1.1  ryo #define VM_PORT_CMD			0x5658
     37  1.1  ryo #define VM_PORT_RPC			0x5659
     38  1.1  ryo 
     39  1.1  ryo /* Commands, passed on ECX.LOW. */
     40  1.1  ryo #define VM_CMD_GET_SPEED		0x01
     41  1.1  ryo #define VM_CMD_APM			0x02
     42  1.1  ryo #define VM_CMD_GET_MOUSEPOS		0x04
     43  1.1  ryo #define VM_CMD_SET_MOUSEPOS		0x05
     44  1.1  ryo #define VM_CMD_GET_CLIPBOARD_LEN	0x06
     45  1.1  ryo #define VM_CMD_GET_CLIPBOARD		0x07
     46  1.1  ryo #define VM_CMD_SET_CLIPBOARD_LEN	0x08
     47  1.1  ryo #define VM_CMD_SET_CLIPBOARD		0x09
     48  1.1  ryo #define VM_CMD_GET_VERSION		0x0a
     49  1.1  ryo #define  VM_VERSION_UNMANAGED			0x7fffffff
     50  1.1  ryo #define VM_CMD_GET_DEVINFO		0x0b
     51  1.1  ryo #define VM_CMD_DEV_ADDREMOVE		0x0c
     52  1.1  ryo #define VM_CMD_GET_GUI_OPTIONS		0x0d
     53  1.1  ryo #define VM_CMD_SET_GUI_OPTIONS		0x0e
     54  1.1  ryo #define VM_CMD_GET_SCREEN_SIZE		0x0f
     55  1.1  ryo #define VM_CMD_GET_HWVER		0x11
     56  1.1  ryo #define VM_CMD_POPUP_OSNOTFOUND		0x12
     57  1.1  ryo #define VM_CMD_GET_BIOS_UUID		0x13
     58  1.1  ryo #define VM_CMD_GET_MEM_SIZE		0x14
     59  1.1  ryo /*#define VM_CMD_GET_TIME		0x17 */	/* deprecated */
     60  1.1  ryo #define VM_CMD_RPC			0x1e
     61  1.1  ryo #define VM_CMD_GET_HZ			0x2d
     62  1.1  ryo #define VM_CMD_GET_TIME_FULL		0x2e
     63  1.1  ryo #define VM_CMD_GET_VCPU_INFO		0x44
     64  1.1  ryo #define  VCPUINFO_LEGACY_X2APIC			__BIT(3)
     65  1.1  ryo #define  VCPUINFO_VCPU_RESERVED			__BIT(31)
     66  1.1  ryo 
     67  1.1  ryo /* RPC sub-commands, passed on ECX.HIGH. */
     68  1.1  ryo #define VM_RPC_OPEN			0x00
     69  1.1  ryo #define VM_RPC_SET_LENGTH		0x01
     70  1.1  ryo #define VM_RPC_SET_DATA			0x02
     71  1.1  ryo #define VM_RPC_GET_LENGTH		0x03
     72  1.1  ryo #define VM_RPC_GET_DATA			0x04
     73  1.1  ryo #define VM_RPC_GET_END			0x05
     74  1.1  ryo #define VM_RPC_CLOSE			0x06
     75  1.1  ryo 
     76  1.1  ryo /* RPC magic numbers, passed on EBX. */
     77  1.1  ryo #define VM_RPC_OPEN_RPCI	0x49435052UL /* with VM_RPC_OPEN. */
     78  1.1  ryo #define VM_RPC_OPEN_TCLO	0x4F4C4354UL /* with VP_RPC_OPEN. */
     79  1.1  ryo #define VM_RPC_ENH_DATA		0x00010000UL /* with enhanced RPC data calls. */
     80  1.1  ryo 
     81  1.1  ryo #define VM_RPC_FLAG_COOKIE	0x80000000UL
     82  1.1  ryo 
     83  1.1  ryo /* RPC reply flags */
     84  1.1  ryo #define VM_RPC_REPLY_SUCCESS	0x0001
     85  1.1  ryo #define VM_RPC_REPLY_DORECV	0x0002		/* incoming message available */
     86  1.1  ryo #define VM_RPC_REPLY_CLOSED	0x0004		/* RPC channel is closed */
     87  1.1  ryo #define VM_RPC_REPLY_UNSENT	0x0008		/* incoming message was removed? */
     88  1.1  ryo #define VM_RPC_REPLY_CHECKPOINT	0x0010		/* checkpoint occurred -> retry */
     89  1.1  ryo #define VM_RPC_REPLY_POWEROFF	0x0020		/* underlying device is powering off */
     90  1.1  ryo #define VM_RPC_REPLY_TIMEOUT	0x0040
     91  1.1  ryo #define VM_RPC_REPLY_HB		0x0080		/* high-bandwidth tx/rx available */
     92  1.1  ryo 
     93  1.1  ryo /* VM state change IDs */
     94  1.1  ryo #define VM_STATE_CHANGE_HALT	1
     95  1.1  ryo #define VM_STATE_CHANGE_REBOOT	2
     96  1.1  ryo #define VM_STATE_CHANGE_POWERON 3
     97  1.1  ryo #define VM_STATE_CHANGE_RESUME  4
     98  1.1  ryo #define VM_STATE_CHANGE_SUSPEND 5
     99  1.1  ryo 
    100  1.1  ryo /* VM guest info keys */
    101  1.1  ryo #define VM_GUEST_INFO_DNS_NAME		1
    102  1.1  ryo #define VM_GUEST_INFO_IP_ADDRESS	2
    103  1.1  ryo #define VM_GUEST_INFO_DISK_FREE_SPACE	3
    104  1.1  ryo #define VM_GUEST_INFO_BUILD_NUMBER	4
    105  1.1  ryo #define VM_GUEST_INFO_OS_NAME_FULL	5
    106  1.1  ryo #define VM_GUEST_INFO_OS_NAME		6
    107  1.1  ryo #define VM_GUEST_INFO_UPTIME		7
    108  1.1  ryo #define VM_GUEST_INFO_MEMORY		8
    109  1.1  ryo #define VM_GUEST_INFO_IP_ADDRESS_V2	9
    110  1.1  ryo 
    111  1.1  ryo /* RPC responses */
    112  1.1  ryo #define VM_RPC_REPLY_OK			"OK "
    113  1.1  ryo #define VM_RPC_RESET_REPLY		"OK ATR toolbox"
    114  1.1  ryo #define VM_RPC_REPLY_ERROR		"ERROR Unknown command"
    115  1.1  ryo #define VM_RPC_REPLY_ERROR_IP_ADDR	"ERROR Unable to find guest IP address"
    116  1.1  ryo 
    117  1.1  ryo #endif /* _DEV_VMT_VMTREG_H_ */
    118