1*bb4ee6a4SAndroid Build Coastguard Worker#!/usr/bin/env bash 2*bb4ee6a4SAndroid Build Coastguard Worker# Copyright 2022 The ChromiumOS Authors 3*bb4ee6a4SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 4*bb4ee6a4SAndroid Build Coastguard Worker# found in the LICENSE file. 5*bb4ee6a4SAndroid Build Coastguard Worker 6*bb4ee6a4SAndroid Build Coastguard Worker# Regenerate virtio_sys bindgen bindings. 7*bb4ee6a4SAndroid Build Coastguard Worker 8*bb4ee6a4SAndroid Build Coastguard Workerset -euo pipefail 9*bb4ee6a4SAndroid Build Coastguard Workercd "$(dirname "${BASH_SOURCE[0]}")/.." 10*bb4ee6a4SAndroid Build Coastguard Worker 11*bb4ee6a4SAndroid Build Coastguard Workersource tools/impl/bindgen-common.sh 12*bb4ee6a4SAndroid Build Coastguard Worker 13*bb4ee6a4SAndroid Build Coastguard Workerbindgen_generate \ 14*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-type='vhost_.*' \ 15*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-var='VHOST_.*' \ 16*bb4ee6a4SAndroid Build Coastguard Worker "${BINDGEN_LINUX_X86_HEADERS}/include/linux/vhost.h" \ 17*bb4ee6a4SAndroid Build Coastguard Worker -- \ 18*bb4ee6a4SAndroid Build Coastguard Worker -isystem "${BINDGEN_LINUX_X86_HEADERS}/include" \ 19*bb4ee6a4SAndroid Build Coastguard Worker | replace_linux_int_types \ 20*bb4ee6a4SAndroid Build Coastguard Worker > virtio_sys/src/vhost.rs 21*bb4ee6a4SAndroid Build Coastguard Worker 22*bb4ee6a4SAndroid Build Coastguard WorkerVIRTIO_CONFIG_EXTRA="// Added by virtio_sys/bindgen.sh 23*bb4ee6a4SAndroid Build Coastguard Workerpub const VIRTIO_CONFIG_S_SUSPEND: u32 = 16; 24*bb4ee6a4SAndroid Build Coastguard Workerpub const VIRTIO_F_SUSPEND: u32 = 42;" 25*bb4ee6a4SAndroid Build Coastguard Worker 26*bb4ee6a4SAndroid Build Coastguard Workerbindgen_generate \ 27*bb4ee6a4SAndroid Build Coastguard Worker --raw-line "${VIRTIO_CONFIG_EXTRA}" \ 28*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-var='VIRTIO_.*' \ 29*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-type='virtio_.*' \ 30*bb4ee6a4SAndroid Build Coastguard Worker "${BINDGEN_LINUX_X86_HEADERS}/include/linux/virtio_config.h" \ 31*bb4ee6a4SAndroid Build Coastguard Worker -- \ 32*bb4ee6a4SAndroid Build Coastguard Worker -isystem "${BINDGEN_LINUX_X86_HEADERS}/include" \ 33*bb4ee6a4SAndroid Build Coastguard Worker | replace_linux_int_types \ 34*bb4ee6a4SAndroid Build Coastguard Worker > virtio_sys/src/virtio_config.rs 35*bb4ee6a4SAndroid Build Coastguard Worker 36*bb4ee6a4SAndroid Build Coastguard WorkerVIRTIO_FS_EXTRA="// Added by virtio_sys/bindgen.sh 37*bb4ee6a4SAndroid Build Coastguard Workeruse data_model::Le32; 38*bb4ee6a4SAndroid Build Coastguard Workeruse zerocopy::AsBytes; 39*bb4ee6a4SAndroid Build Coastguard Workeruse zerocopy::FromBytes; 40*bb4ee6a4SAndroid Build Coastguard Workeruse zerocopy::FromZeroes;" 41*bb4ee6a4SAndroid Build Coastguard Worker 42*bb4ee6a4SAndroid Build Coastguard Workerbindgen_generate \ 43*bb4ee6a4SAndroid Build Coastguard Worker --raw-line "${VIRTIO_FS_EXTRA}" \ 44*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-var='VIRTIO_FS_.*' \ 45*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-type='virtio_fs_.*' \ 46*bb4ee6a4SAndroid Build Coastguard Worker --with-derive-custom "virtio_fs_config=FromZeroes,FromBytes,AsBytes" \ 47*bb4ee6a4SAndroid Build Coastguard Worker "${BINDGEN_LINUX_X86_HEADERS}/include/linux/virtio_fs.h" \ 48*bb4ee6a4SAndroid Build Coastguard Worker -- \ 49*bb4ee6a4SAndroid Build Coastguard Worker -isystem "${BINDGEN_LINUX_X86_HEADERS}/include" \ 50*bb4ee6a4SAndroid Build Coastguard Worker | replace_linux_int_types \ 51*bb4ee6a4SAndroid Build Coastguard Worker | replace_linux_endian_types \ 52*bb4ee6a4SAndroid Build Coastguard Worker > virtio_sys/src/virtio_fs.rs 53*bb4ee6a4SAndroid Build Coastguard Worker 54*bb4ee6a4SAndroid Build Coastguard WorkerVIRTIO_IDS_EXTRAS=" 55*bb4ee6a4SAndroid Build Coastguard Worker//! This file defines virtio device IDs. IDs with large values (counting down 56*bb4ee6a4SAndroid Build Coastguard Worker//! from 63) are nonstandard and not defined by the virtio specification. 57*bb4ee6a4SAndroid Build Coastguard Worker 58*bb4ee6a4SAndroid Build Coastguard Worker// Added by virtio_sys/bindgen.sh - do not edit the generated file. 59*bb4ee6a4SAndroid Build Coastguard Worker// TODO(b/236144983): Fix this id when an official virtio-id is assigned to this device. 60*bb4ee6a4SAndroid Build Coastguard Workerpub const VIRTIO_ID_PVCLOCK: u32 = 61; 61*bb4ee6a4SAndroid Build Coastguard Worker// TODO: Remove this once the ID is included in the Linux headers. 62*bb4ee6a4SAndroid Build Coastguard Workerpub const VIRTIO_ID_MEDIA: u32 = 48; 63*bb4ee6a4SAndroid Build Coastguard Worker" 64*bb4ee6a4SAndroid Build Coastguard Worker 65*bb4ee6a4SAndroid Build Coastguard Workerbindgen_generate \ 66*bb4ee6a4SAndroid Build Coastguard Worker --raw-line "${VIRTIO_IDS_EXTRAS}" \ 67*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-var='VIRTIO_ID_.*' \ 68*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-type='virtio_.*' \ 69*bb4ee6a4SAndroid Build Coastguard Worker "${BINDGEN_LINUX_X86_HEADERS}/include/linux/virtio_ids.h" \ 70*bb4ee6a4SAndroid Build Coastguard Worker -- \ 71*bb4ee6a4SAndroid Build Coastguard Worker -isystem "${BINDGEN_LINUX_X86_HEADERS}/include" \ 72*bb4ee6a4SAndroid Build Coastguard Worker | replace_linux_int_types \ 73*bb4ee6a4SAndroid Build Coastguard Worker | rustfmt \ 74*bb4ee6a4SAndroid Build Coastguard Worker > virtio_sys/src/virtio_ids.rs 75*bb4ee6a4SAndroid Build Coastguard Worker 76*bb4ee6a4SAndroid Build Coastguard WorkerVIRTIO_NET_EXTRA="// Added by virtio_sys/bindgen.sh 77*bb4ee6a4SAndroid Build Coastguard Workeruse zerocopy::AsBytes; 78*bb4ee6a4SAndroid Build Coastguard Workeruse zerocopy::FromBytes; 79*bb4ee6a4SAndroid Build Coastguard Workeruse zerocopy::FromZeroes;" 80*bb4ee6a4SAndroid Build Coastguard Worker 81*bb4ee6a4SAndroid Build Coastguard Workerbindgen_generate \ 82*bb4ee6a4SAndroid Build Coastguard Worker --raw-line "${VIRTIO_NET_EXTRA}" \ 83*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-var='VIRTIO_NET_.*' \ 84*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-type='virtio_net_.*' \ 85*bb4ee6a4SAndroid Build Coastguard Worker --blocklist-type='virtio_net_ctrl_mac' \ 86*bb4ee6a4SAndroid Build Coastguard Worker --with-derive-custom "virtio_net_hdr=FromZeroes,FromBytes,AsBytes" \ 87*bb4ee6a4SAndroid Build Coastguard Worker --with-derive-custom "virtio_net_hdr_mrg_rxbuf=FromZeroes,FromBytes,AsBytes" \ 88*bb4ee6a4SAndroid Build Coastguard Worker "${BINDGEN_LINUX_X86_HEADERS}/include/linux/virtio_net.h" \ 89*bb4ee6a4SAndroid Build Coastguard Worker -- \ 90*bb4ee6a4SAndroid Build Coastguard Worker -isystem "${BINDGEN_LINUX_X86_HEADERS}/include" \ 91*bb4ee6a4SAndroid Build Coastguard Worker | replace_linux_int_types \ 92*bb4ee6a4SAndroid Build Coastguard Worker > virtio_sys/src/virtio_net.rs 93*bb4ee6a4SAndroid Build Coastguard Worker 94*bb4ee6a4SAndroid Build Coastguard Workerbindgen_generate \ 95*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-var='VRING_.*' \ 96*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-var='VIRTIO_RING_.*' \ 97*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-type='vring.*' \ 98*bb4ee6a4SAndroid Build Coastguard Worker "${BINDGEN_LINUX_X86_HEADERS}/include/linux/virtio_ring.h" \ 99*bb4ee6a4SAndroid Build Coastguard Worker -- \ 100*bb4ee6a4SAndroid Build Coastguard Worker -isystem "${BINDGEN_LINUX_X86_HEADERS}/include" \ 101*bb4ee6a4SAndroid Build Coastguard Worker | replace_linux_int_types \ 102*bb4ee6a4SAndroid Build Coastguard Worker > virtio_sys/src/virtio_ring.rs 103*bb4ee6a4SAndroid Build Coastguard Worker 104*bb4ee6a4SAndroid Build Coastguard Workerbindgen_generate \ 105*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-var='VIRTIO_.*' \ 106*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-type='virtio_.*' \ 107*bb4ee6a4SAndroid Build Coastguard Worker "${BINDGEN_LINUX_X86_HEADERS}/include/linux/virtio_mmio.h" \ 108*bb4ee6a4SAndroid Build Coastguard Worker -- \ 109*bb4ee6a4SAndroid Build Coastguard Worker -isystem "${BINDGEN_LINUX_X86_HEADERS}/include" \ 110*bb4ee6a4SAndroid Build Coastguard Worker | replace_linux_int_types \ 111*bb4ee6a4SAndroid Build Coastguard Worker > virtio_sys/src/virtio_mmio.rs 112*bb4ee6a4SAndroid Build Coastguard Worker 113*bb4ee6a4SAndroid Build Coastguard WorkerVIRTIO_VSOCK_EXTRA="// Added by virtio_sys/bindgen.sh 114*bb4ee6a4SAndroid Build Coastguard Workeruse data_model::Le16; 115*bb4ee6a4SAndroid Build Coastguard Workeruse data_model::Le32; 116*bb4ee6a4SAndroid Build Coastguard Workeruse data_model::Le64; 117*bb4ee6a4SAndroid Build Coastguard Workeruse zerocopy::AsBytes;" 118*bb4ee6a4SAndroid Build Coastguard Worker 119*bb4ee6a4SAndroid Build Coastguard Workerbindgen_generate \ 120*bb4ee6a4SAndroid Build Coastguard Worker --raw-line "${VIRTIO_VSOCK_EXTRA}" \ 121*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-var='VIRTIO_VSOCK_.*' \ 122*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-type='virtio_vsock_.*' \ 123*bb4ee6a4SAndroid Build Coastguard Worker --with-derive-custom "virtio_vsock_event=AsBytes" \ 124*bb4ee6a4SAndroid Build Coastguard Worker "${BINDGEN_LINUX_X86_HEADERS}/include/linux/virtio_vsock.h" \ 125*bb4ee6a4SAndroid Build Coastguard Worker -- \ 126*bb4ee6a4SAndroid Build Coastguard Worker -isystem "${BINDGEN_LINUX_X86_HEADERS}/include" \ 127*bb4ee6a4SAndroid Build Coastguard Worker | replace_linux_int_types \ 128*bb4ee6a4SAndroid Build Coastguard Worker | replace_linux_endian_types \ 129*bb4ee6a4SAndroid Build Coastguard Worker > virtio_sys/src/virtio_vsock.rs 130*bb4ee6a4SAndroid Build Coastguard Worker 131*bb4ee6a4SAndroid Build Coastguard WorkerVIRTIO_SCSI_EXTRA="// Added by virtio_sys/bindgen.sh 132*bb4ee6a4SAndroid Build Coastguard Workeruse zerocopy::AsBytes; 133*bb4ee6a4SAndroid Build Coastguard Workeruse zerocopy::FromBytes; 134*bb4ee6a4SAndroid Build Coastguard Workeruse zerocopy::FromZeroes;" 135*bb4ee6a4SAndroid Build Coastguard Worker 136*bb4ee6a4SAndroid Build Coastguard Workerbindgen_generate \ 137*bb4ee6a4SAndroid Build Coastguard Worker --raw-line "${VIRTIO_SCSI_EXTRA}" \ 138*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-var='VIRTIO_SCSI_.*' \ 139*bb4ee6a4SAndroid Build Coastguard Worker --allowlist-type='virtio_scsi_.*' \ 140*bb4ee6a4SAndroid Build Coastguard Worker --blocklist-type='virtio_scsi_cmd_req_pi' \ 141*bb4ee6a4SAndroid Build Coastguard Worker --with-derive-custom "virtio_scsi_config=FromZeroes,FromBytes,AsBytes" \ 142*bb4ee6a4SAndroid Build Coastguard Worker --with-derive-custom "virtio_scsi_cmd_req=FromZeroes,FromBytes,AsBytes" \ 143*bb4ee6a4SAndroid Build Coastguard Worker --with-derive-custom "virtio_scsi_cmd_resp=FromZeroes,FromBytes,AsBytes" \ 144*bb4ee6a4SAndroid Build Coastguard Worker --with-derive-custom "virtio_scsi_ctrl_tmf_req=FromZeroes,FromBytes,AsBytes" \ 145*bb4ee6a4SAndroid Build Coastguard Worker --with-derive-custom "virtio_scsi_ctrl_an_req=FromZeroes,FromBytes,AsBytes" \ 146*bb4ee6a4SAndroid Build Coastguard Worker --with-derive-custom "virtio_scsi_ctrl_tmf_resp=FromZeroes,FromBytes,AsBytes" \ 147*bb4ee6a4SAndroid Build Coastguard Worker --with-derive-custom "virtio_scsi_ctrl_an_resp=FromZeroes,FromBytes,AsBytes" \ 148*bb4ee6a4SAndroid Build Coastguard Worker "${BINDGEN_LINUX_X86_HEADERS}/include/linux/virtio_scsi.h" \ 149*bb4ee6a4SAndroid Build Coastguard Worker -- \ 150*bb4ee6a4SAndroid Build Coastguard Worker -isystem "${BINDGEN_LINUX_X86_HEADERS}/include" \ 151*bb4ee6a4SAndroid Build Coastguard Worker | replace_linux_int_types \ 152*bb4ee6a4SAndroid Build Coastguard Worker | replace_linux_endian_types \ 153*bb4ee6a4SAndroid Build Coastguard Worker > virtio_sys/src/virtio_scsi.rs 154