1/* 2 * This header was generated from the Linux kernel headers by update_headers.py, 3 * to provide necessary information from kernel to userspace, such as constants, 4 * structures, and macros, and thus, contains no copyrightable information. 5 */ 6#ifndef __UAPI_VBOXGUEST_H__ 7#define __UAPI_VBOXGUEST_H__ 8#include <asm/bitsperlong.h> 9#include <linux/ioctl.h> 10#include <linux/vbox_err.h> 11#include <linux/vbox_vmmdev_types.h> 12#define VBG_IOCTL_HDR_VERSION 0x10001 13#define VBG_IOCTL_HDR_TYPE_DEFAULT 0 14struct vbg_ioctl_hdr { 15 16 __u32 size_in; 17 18 __u32 version; 19 20 __u32 type; 21 22 __s32 rc; 23 24 __u32 size_out; 25 26 __u32 reserved; 27}; 28VMMDEV_ASSERT_SIZE(vbg_ioctl_hdr, 24); 29#define VBG_IOC_VERSION 0x00010000u 30struct vbg_ioctl_driver_version_info { 31 32 struct vbg_ioctl_hdr hdr; 33 union { 34 struct { 35 36 __u32 req_version; 37 38 __u32 min_version; 39 40 __u32 reserved1; 41 42 __u32 reserved2; 43 } in; 44 struct { 45 46 __u32 session_version; 47 48 __u32 driver_version; 49 50 __u32 driver_revision; 51 52 __u32 reserved1; 53 54 __u32 reserved2; 55 } out; 56 } u; 57}; 58VMMDEV_ASSERT_SIZE(vbg_ioctl_driver_version_info, 24 + 20); 59#define VBG_IOCTL_DRIVER_VERSION_INFO \ 60 _IOWR('V', 0, struct vbg_ioctl_driver_version_info) 61#define VBG_IOCTL_VMMDEV_REQUEST(s) _IOC(_IOC_READ | _IOC_WRITE, 'V', 2, s) 62#define VBG_IOCTL_VMMDEV_REQUEST_BIG _IO('V', 3) 63struct vbg_ioctl_hgcm_connect { 64 struct vbg_ioctl_hdr hdr; 65 union { 66 struct { 67 struct vmmdev_hgcm_service_location loc; 68 } in; 69 struct { 70 __u32 client_id; 71 } out; 72 } u; 73}; 74VMMDEV_ASSERT_SIZE(vbg_ioctl_hgcm_connect, 24 + 132); 75#define VBG_IOCTL_HGCM_CONNECT \ 76 _IOWR('V', 4, struct vbg_ioctl_hgcm_connect) 77struct vbg_ioctl_hgcm_disconnect { 78 struct vbg_ioctl_hdr hdr; 79 union { 80 struct { 81 __u32 client_id; 82 } in; 83 } u; 84}; 85VMMDEV_ASSERT_SIZE(vbg_ioctl_hgcm_disconnect, 24 + 4); 86#define VBG_IOCTL_HGCM_DISCONNECT \ 87 _IOWR('V', 5, struct vbg_ioctl_hgcm_disconnect) 88struct vbg_ioctl_hgcm_call { 89 90 struct vbg_ioctl_hdr hdr; 91 92 __u32 client_id; 93 94 __u32 function; 95 96 __u32 timeout_ms; 97 98 __u8 interruptible; 99 100 __u8 reserved; 101 102 __u16 parm_count; 103 104}; 105VMMDEV_ASSERT_SIZE(vbg_ioctl_hgcm_call, 24 + 16); 106#define VBG_IOCTL_HGCM_CALL_32(s) _IOC(_IOC_READ | _IOC_WRITE, 'V', 6, s) 107#define VBG_IOCTL_HGCM_CALL_64(s) _IOC(_IOC_READ | _IOC_WRITE, 'V', 7, s) 108#if __BITS_PER_LONG == 64 109#define VBG_IOCTL_HGCM_CALL(s) VBG_IOCTL_HGCM_CALL_64(s) 110#else 111#define VBG_IOCTL_HGCM_CALL(s) VBG_IOCTL_HGCM_CALL_32(s) 112#endif 113struct vbg_ioctl_log { 114 115 struct vbg_ioctl_hdr hdr; 116 union { 117 struct { 118 119 char msg[1]; 120 } in; 121 } u; 122}; 123#define VBG_IOCTL_LOG(s) _IO('V', 9) 124struct vbg_ioctl_wait_for_events { 125 126 struct vbg_ioctl_hdr hdr; 127 union { 128 struct { 129 130 __u32 timeout_ms; 131 132 __u32 events; 133 } in; 134 struct { 135 136 __u32 events; 137 } out; 138 } u; 139}; 140VMMDEV_ASSERT_SIZE(vbg_ioctl_wait_for_events, 24 + 8); 141#define VBG_IOCTL_WAIT_FOR_EVENTS \ 142 _IOWR('V', 10, struct vbg_ioctl_wait_for_events) 143#define VBG_IOCTL_INTERRUPT_ALL_WAIT_FOR_EVENTS \ 144 _IOWR('V', 11, struct vbg_ioctl_hdr) 145struct vbg_ioctl_change_filter { 146 147 struct vbg_ioctl_hdr hdr; 148 union { 149 struct { 150 151 __u32 or_mask; 152 153 __u32 not_mask; 154 } in; 155 } u; 156}; 157VMMDEV_ASSERT_SIZE(vbg_ioctl_change_filter, 24 + 8); 158#define VBG_IOCTL_CHANGE_FILTER_MASK \ 159 _IOWR('V', 12, struct vbg_ioctl_change_filter) 160struct vbg_ioctl_set_guest_caps { 161 162 struct vbg_ioctl_hdr hdr; 163 union { 164 struct { 165 166 __u32 or_mask; 167 168 __u32 not_mask; 169 } in; 170 struct { 171 172 __u32 session_caps; 173 174 __u32 global_caps; 175 } out; 176 } u; 177}; 178VMMDEV_ASSERT_SIZE(vbg_ioctl_set_guest_caps, 24 + 8); 179#define VBG_IOCTL_CHANGE_GUEST_CAPABILITIES \ 180 _IOWR('V', 14, struct vbg_ioctl_set_guest_caps) 181struct vbg_ioctl_check_balloon { 182 183 struct vbg_ioctl_hdr hdr; 184 union { 185 struct { 186 187 __u32 balloon_chunks; 188 189 __u8 handle_in_r3; 190 191 __u8 padding[3]; 192 } out; 193 } u; 194}; 195VMMDEV_ASSERT_SIZE(vbg_ioctl_check_balloon, 24 + 8); 196#define VBG_IOCTL_CHECK_BALLOON \ 197 _IOWR('V', 17, struct vbg_ioctl_check_balloon) 198struct vbg_ioctl_write_coredump { 199 struct vbg_ioctl_hdr hdr; 200 union { 201 struct { 202 __u32 flags; 203 } in; 204 } u; 205}; 206VMMDEV_ASSERT_SIZE(vbg_ioctl_write_coredump, 24 + 4); 207#define VBG_IOCTL_WRITE_CORE_DUMP \ 208 _IOWR('V', 19, struct vbg_ioctl_write_coredump) 209#endif 210