1 /**************************************************************************** 2 **************************************************************************** 3 *** 4 *** This header was automatically generated from a Linux kernel header 5 *** of the same name, to make information necessary for userspace to 6 *** call into the kernel available to libc. It contains only constants, 7 *** structures, and macros generated from the original header, and thus, 8 *** contains no copyrightable information. 9 *** 10 *** To edit the content of this header, modify the corresponding 11 *** source file (e.g. under external/kernel-headers/original/) then 12 *** run bionic/libc/kernel/tools/update_all.py 13 *** 14 *** Any manual change here will be lost the next time this script will 15 *** be run. You've been warned! 16 *** 17 **************************************************************************** 18 ****************************************************************************/ 19 #ifndef __UAPI_VBOX_VMMDEV_TYPES_H__ 20 #define __UAPI_VBOX_VMMDEV_TYPES_H__ 21 #include <asm/bitsperlong.h> 22 #include <linux/types.h> 23 #define VMMDEV_ASSERT_SIZE(type,size) typedef char type ##_asrt_size[1 - 2 * ! ! (sizeof(struct type) != (size))] 24 enum vmmdev_request_type { 25 VMMDEVREQ_INVALID_REQUEST = 0, 26 VMMDEVREQ_GET_MOUSE_STATUS = 1, 27 VMMDEVREQ_SET_MOUSE_STATUS = 2, 28 VMMDEVREQ_SET_POINTER_SHAPE = 3, 29 VMMDEVREQ_GET_HOST_VERSION = 4, 30 VMMDEVREQ_IDLE = 5, 31 VMMDEVREQ_GET_HOST_TIME = 10, 32 VMMDEVREQ_GET_HYPERVISOR_INFO = 20, 33 VMMDEVREQ_SET_HYPERVISOR_INFO = 21, 34 VMMDEVREQ_REGISTER_PATCH_MEMORY = 22, 35 VMMDEVREQ_DEREGISTER_PATCH_MEMORY = 23, 36 VMMDEVREQ_SET_POWER_STATUS = 30, 37 VMMDEVREQ_ACKNOWLEDGE_EVENTS = 41, 38 VMMDEVREQ_CTL_GUEST_FILTER_MASK = 42, 39 VMMDEVREQ_REPORT_GUEST_INFO = 50, 40 VMMDEVREQ_REPORT_GUEST_INFO2 = 58, 41 VMMDEVREQ_REPORT_GUEST_STATUS = 59, 42 VMMDEVREQ_REPORT_GUEST_USER_STATE = 74, 43 VMMDEVREQ_GET_DISPLAY_CHANGE_REQ = 51, 44 VMMDEVREQ_VIDEMODE_SUPPORTED = 52, 45 VMMDEVREQ_GET_HEIGHT_REDUCTION = 53, 46 VMMDEVREQ_GET_DISPLAY_CHANGE_REQ2 = 54, 47 VMMDEVREQ_REPORT_GUEST_CAPABILITIES = 55, 48 VMMDEVREQ_SET_GUEST_CAPABILITIES = 56, 49 VMMDEVREQ_VIDEMODE_SUPPORTED2 = 57, 50 VMMDEVREQ_GET_DISPLAY_CHANGE_REQEX = 80, 51 VMMDEVREQ_GET_DISPLAY_CHANGE_REQ_MULTI = 81, 52 VMMDEVREQ_HGCM_CONNECT = 60, 53 VMMDEVREQ_HGCM_DISCONNECT = 61, 54 VMMDEVREQ_HGCM_CALL32 = 62, 55 VMMDEVREQ_HGCM_CALL64 = 63, 56 VMMDEVREQ_HGCM_CANCEL = 64, 57 VMMDEVREQ_HGCM_CANCEL2 = 65, 58 VMMDEVREQ_VIDEO_ACCEL_ENABLE = 70, 59 VMMDEVREQ_VIDEO_ACCEL_FLUSH = 71, 60 VMMDEVREQ_VIDEO_SET_VISIBLE_REGION = 72, 61 VMMDEVREQ_GET_SEAMLESS_CHANGE_REQ = 73, 62 VMMDEVREQ_QUERY_CREDENTIALS = 100, 63 VMMDEVREQ_REPORT_CREDENTIALS_JUDGEMENT = 101, 64 VMMDEVREQ_REPORT_GUEST_STATS = 110, 65 VMMDEVREQ_GET_MEMBALLOON_CHANGE_REQ = 111, 66 VMMDEVREQ_GET_STATISTICS_CHANGE_REQ = 112, 67 VMMDEVREQ_CHANGE_MEMBALLOON = 113, 68 VMMDEVREQ_GET_VRDPCHANGE_REQ = 150, 69 VMMDEVREQ_LOG_STRING = 200, 70 VMMDEVREQ_GET_CPU_HOTPLUG_REQ = 210, 71 VMMDEVREQ_SET_CPU_HOTPLUG_STATUS = 211, 72 VMMDEVREQ_REGISTER_SHARED_MODULE = 212, 73 VMMDEVREQ_UNREGISTER_SHARED_MODULE = 213, 74 VMMDEVREQ_CHECK_SHARED_MODULES = 214, 75 VMMDEVREQ_GET_PAGE_SHARING_STATUS = 215, 76 VMMDEVREQ_DEBUG_IS_PAGE_SHARED = 216, 77 VMMDEVREQ_GET_SESSION_ID = 217, 78 VMMDEVREQ_WRITE_COREDUMP = 218, 79 VMMDEVREQ_GUEST_HEARTBEAT = 219, 80 VMMDEVREQ_HEARTBEAT_CONFIGURE = 220, 81 VMMDEVREQ_NT_BUG_CHECK = 221, 82 VMMDEVREQ_VIDEO_UPDATE_MONITOR_POSITIONS = 222, 83 VMMDEVREQ_SIZEHACK = 0x7fffffff 84 }; 85 #if __BITS_PER_LONG == 64 86 #define VMMDEVREQ_HGCM_CALL VMMDEVREQ_HGCM_CALL64 87 #else 88 #define VMMDEVREQ_HGCM_CALL VMMDEVREQ_HGCM_CALL32 89 #endif 90 #define VMMDEV_REQUESTOR_USR_NOT_GIVEN 0x00000000 91 #define VMMDEV_REQUESTOR_USR_DRV 0x00000001 92 #define VMMDEV_REQUESTOR_USR_DRV_OTHER 0x00000002 93 #define VMMDEV_REQUESTOR_USR_ROOT 0x00000003 94 #define VMMDEV_REQUESTOR_USR_USER 0x00000006 95 #define VMMDEV_REQUESTOR_USR_MASK 0x00000007 96 #define VMMDEV_REQUESTOR_KERNEL 0x00000000 97 #define VMMDEV_REQUESTOR_USERMODE 0x00000008 98 #define VMMDEV_REQUESTOR_MODE_MASK 0x00000008 99 #define VMMDEV_REQUESTOR_CON_DONT_KNOW 0x00000000 100 #define VMMDEV_REQUESTOR_CON_NO 0x00000010 101 #define VMMDEV_REQUESTOR_CON_YES 0x00000020 102 #define VMMDEV_REQUESTOR_CON_MASK 0x00000030 103 #define VMMDEV_REQUESTOR_GRP_VBOX 0x00000080 104 #define VMMDEV_REQUESTOR_TRUST_NOT_GIVEN 0x00000000 105 #define VMMDEV_REQUESTOR_TRUST_UNTRUSTED 0x00001000 106 #define VMMDEV_REQUESTOR_TRUST_LOW 0x00002000 107 #define VMMDEV_REQUESTOR_TRUST_MEDIUM 0x00003000 108 #define VMMDEV_REQUESTOR_TRUST_MEDIUM_PLUS 0x00004000 109 #define VMMDEV_REQUESTOR_TRUST_HIGH 0x00005000 110 #define VMMDEV_REQUESTOR_TRUST_SYSTEM 0x00006000 111 #define VMMDEV_REQUESTOR_TRUST_PROTECTED 0x00007000 112 #define VMMDEV_REQUESTOR_TRUST_MASK 0x00007000 113 #define VMMDEV_REQUESTOR_USER_DEVICE 0x00008000 114 enum vmmdev_hgcm_service_location_type { 115 VMMDEV_HGCM_LOC_INVALID = 0, 116 VMMDEV_HGCM_LOC_LOCALHOST = 1, 117 VMMDEV_HGCM_LOC_LOCALHOST_EXISTING = 2, 118 VMMDEV_HGCM_LOC_SIZEHACK = 0x7fffffff 119 }; 120 struct vmmdev_hgcm_service_location_localhost { 121 char service_name[128]; 122 }; 123 struct vmmdev_hgcm_service_location { 124 enum vmmdev_hgcm_service_location_type type; 125 union { 126 struct vmmdev_hgcm_service_location_localhost localhost; 127 } u; 128 }; 129 enum vmmdev_hgcm_function_parameter_type { 130 VMMDEV_HGCM_PARM_TYPE_INVALID = 0, 131 VMMDEV_HGCM_PARM_TYPE_32BIT = 1, 132 VMMDEV_HGCM_PARM_TYPE_64BIT = 2, 133 VMMDEV_HGCM_PARM_TYPE_PHYSADDR = 3, 134 VMMDEV_HGCM_PARM_TYPE_LINADDR = 4, 135 VMMDEV_HGCM_PARM_TYPE_LINADDR_IN = 5, 136 VMMDEV_HGCM_PARM_TYPE_LINADDR_OUT = 6, 137 VMMDEV_HGCM_PARM_TYPE_LINADDR_KERNEL = 7, 138 VMMDEV_HGCM_PARM_TYPE_LINADDR_KERNEL_IN = 8, 139 VMMDEV_HGCM_PARM_TYPE_LINADDR_KERNEL_OUT = 9, 140 VMMDEV_HGCM_PARM_TYPE_PAGELIST = 10, 141 VMMDEV_HGCM_PARM_TYPE_SIZEHACK = 0x7fffffff 142 }; 143 struct vmmdev_hgcm_function_parameter32 { 144 enum vmmdev_hgcm_function_parameter_type type; 145 union { 146 __u32 value32; 147 __u64 value64; 148 struct { 149 __u32 size; 150 union { 151 __u32 phys_addr; 152 __u32 linear_addr; 153 } u; 154 } pointer; 155 struct { 156 __u32 size; 157 __u32 offset; 158 } page_list; 159 } u; 160 } __packed; 161 struct vmmdev_hgcm_function_parameter64 { 162 enum vmmdev_hgcm_function_parameter_type type; 163 union { 164 __u32 value32; 165 __u64 value64; 166 struct { 167 __u32 size; 168 union { 169 __u64 phys_addr; 170 __u64 linear_addr; 171 } u; 172 } __packed pointer; 173 struct { 174 __u32 size; 175 __u32 offset; 176 } page_list; 177 } __packed u; 178 } __packed; 179 #if __BITS_PER_LONG == 64 180 #define vmmdev_hgcm_function_parameter vmmdev_hgcm_function_parameter64 181 #else 182 #define vmmdev_hgcm_function_parameter vmmdev_hgcm_function_parameter32 183 #endif 184 #define VMMDEV_HGCM_F_PARM_DIRECTION_NONE 0x00000000U 185 #define VMMDEV_HGCM_F_PARM_DIRECTION_TO_HOST 0x00000001U 186 #define VMMDEV_HGCM_F_PARM_DIRECTION_FROM_HOST 0x00000002U 187 #define VMMDEV_HGCM_F_PARM_DIRECTION_BOTH 0x00000003U 188 struct vmmdev_hgcm_pagelist { 189 __u32 flags; 190 __u16 offset_first_page; 191 __u16 page_count; 192 __u64 pages[1]; 193 }; 194 #endif 195