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