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