xref: /aosp_15_r20/external/crosvm/hypervisor/src/gunyah/gunyah_sys.rs (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
1 // Copyright 2023 The ChromiumOS Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 //! Bindings for the Linux Gunyah API.
6 
7 #![allow(non_upper_case_globals)]
8 #![allow(non_camel_case_types)]
9 #![allow(non_snake_case)]
10 
11 use base::ioctl_io_nr;
12 use base::ioctl_iow_nr;
13 
14 // generated with gunyah_sys/bindgen.sh
15 pub mod bindings;
16 pub use bindings::*;
17 
18 // These ioctls are commonly defined on all/multiple platforms.
19 ioctl_io_nr!(GH_CREATE_VM, GH_IOCTL_TYPE, 0x0);
20 ioctl_iow_nr!(
21     GH_VM_SET_USER_MEM_REGION,
22     GH_IOCTL_TYPE,
23     0x1,
24     gh_userspace_memory_region
25 );
26 ioctl_iow_nr!(GH_VM_SET_DTB_CONFIG, GH_IOCTL_TYPE, 0x2, gh_vm_dtb_config);
27 ioctl_io_nr!(GH_VM_START, GH_IOCTL_TYPE, 0x3);
28 ioctl_iow_nr!(GH_VM_ADD_FUNCTION, GH_IOCTL_TYPE, 0x4, gh_fn_desc);
29 ioctl_io_nr!(GH_VCPU_RUN, GH_IOCTL_TYPE, 0x5);
30 ioctl_io_nr!(GH_VCPU_MMAP_SIZE, GH_IOCTL_TYPE, 0x6);
31 ioctl_iow_nr!(GH_VM_REMOVE_FUNCTION, GH_IOCTL_TYPE, 0x7, gh_fn_desc);
32 
33 // Special bindings for Android Common Kernel
34 pub const GH_ANDROID_IOCTL_TYPE: u8 = 65u8;
35 ioctl_iow_nr!(
36     GH_VM_ANDROID_LEND_USER_MEM,
37     GH_ANDROID_IOCTL_TYPE,
38     0x11,
39     gh_userspace_memory_region
40 );
41 ioctl_iow_nr!(
42     GH_VM_ANDROID_SET_FW_CONFIG,
43     GH_ANDROID_IOCTL_TYPE,
44     0x12,
45     gh_vm_firmware_config
46 );
47