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