Move the ChromeOS-specific kernel header modifications into the corresponding bindgen.sh patch sections. This also downloads the Linux source rather than relying on the ChromeOS kernel source tree, so it should work without having a chromiumos checkout. BUG=b:402466294 TEST=tools/bindgen-all-the-things Change-Id: I8cb00cdaf847a0a9442722ec9e69e8c6b47cf437 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/6345302 Reviewed-by: Frederick Mayle <fmayle@google.com> Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
161 lines
5.7 KiB
Bash
Executable file
161 lines
5.7 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Copyright 2022 The ChromiumOS Authors
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
# Regenerate virtio_sys bindgen bindings.
|
|
|
|
set -euo pipefail
|
|
cd "$(dirname "${BASH_SOURCE[0]}")/.."
|
|
|
|
source tools/impl/bindgen-common.sh
|
|
|
|
bindgen_generate \
|
|
--allowlist-type='vhost_.*' \
|
|
--allowlist-var='VHOST_.*' \
|
|
"${BINDGEN_LINUX_X86_HEADERS}/include/linux/vhost.h" \
|
|
-- \
|
|
-isystem "${BINDGEN_LINUX_X86_HEADERS}/include" \
|
|
| replace_linux_int_types \
|
|
> virtio_sys/src/vhost.rs
|
|
|
|
VIRTIO_CONFIG_EXTRA="// Added by virtio_sys/bindgen.sh
|
|
pub const VIRTIO_CONFIG_S_SUSPEND: u32 = 16;
|
|
pub const VIRTIO_F_SUSPEND: u32 = 42;"
|
|
|
|
bindgen_generate \
|
|
--raw-line "${VIRTIO_CONFIG_EXTRA}" \
|
|
--allowlist-var='VIRTIO_.*' \
|
|
--allowlist-type='virtio_.*' \
|
|
"${BINDGEN_LINUX_X86_HEADERS}/include/linux/virtio_config.h" \
|
|
-- \
|
|
-isystem "${BINDGEN_LINUX_X86_HEADERS}/include" \
|
|
| replace_linux_int_types \
|
|
> virtio_sys/src/virtio_config.rs
|
|
|
|
VIRTIO_FS_EXTRA="// Added by virtio_sys/bindgen.sh
|
|
use data_model::Le32;
|
|
use zerocopy::FromBytes;
|
|
use zerocopy::Immutable;
|
|
use zerocopy::IntoBytes;
|
|
use zerocopy::KnownLayout;"
|
|
|
|
bindgen_generate \
|
|
--raw-line "${VIRTIO_FS_EXTRA}" \
|
|
--allowlist-var='VIRTIO_FS_.*' \
|
|
--allowlist-type='virtio_fs_.*' \
|
|
--with-derive-custom "virtio_fs_config=FromBytes,Immutable,IntoBytes,KnownLayout" \
|
|
"${BINDGEN_LINUX_X86_HEADERS}/include/linux/virtio_fs.h" \
|
|
-- \
|
|
-isystem "${BINDGEN_LINUX_X86_HEADERS}/include" \
|
|
| replace_linux_int_types \
|
|
| replace_linux_endian_types \
|
|
> virtio_sys/src/virtio_fs.rs
|
|
|
|
VIRTIO_IDS_EXTRAS="
|
|
//! This file defines virtio device IDs. IDs with large values (counting down
|
|
//! from 63) are nonstandard and not defined by the virtio specification.
|
|
|
|
// Added by virtio_sys/bindgen.sh - do not edit the generated file.
|
|
pub const VIRTIO_ID_WL: u32 = 63;
|
|
pub const VIRTIO_ID_TPM: u32 = 62;
|
|
// TODO(b/236144983): Fix this id when an official virtio-id is assigned to this device.
|
|
pub const VIRTIO_ID_PVCLOCK: u32 = 61;
|
|
// TODO: Remove this once the ID is included in the Linux headers.
|
|
pub const VIRTIO_ID_MEDIA: u32 = 48;
|
|
"
|
|
|
|
bindgen_generate \
|
|
--raw-line "${VIRTIO_IDS_EXTRAS}" \
|
|
--allowlist-var='VIRTIO_ID_.*' \
|
|
--allowlist-type='virtio_.*' \
|
|
"${BINDGEN_LINUX_X86_HEADERS}/include/linux/virtio_ids.h" \
|
|
-- \
|
|
-isystem "${BINDGEN_LINUX_X86_HEADERS}/include" \
|
|
| replace_linux_int_types \
|
|
| rustfmt \
|
|
> virtio_sys/src/virtio_ids.rs
|
|
|
|
VIRTIO_NET_EXTRA="// Added by virtio_sys/bindgen.sh
|
|
use zerocopy::FromBytes;
|
|
use zerocopy::Immutable;
|
|
use zerocopy::IntoBytes;
|
|
use zerocopy::KnownLayout;"
|
|
|
|
bindgen_generate \
|
|
--raw-line "${VIRTIO_NET_EXTRA}" \
|
|
--allowlist-var='VIRTIO_NET_.*' \
|
|
--allowlist-type='virtio_net_.*' \
|
|
--blocklist-type='virtio_net_ctrl_mac' \
|
|
--with-derive-custom "virtio_net_hdr=FromBytes,Immutable,IntoBytes,KnownLayout" \
|
|
--with-derive-custom "virtio_net_hdr_mrg_rxbuf=FromBytes,Immutable,IntoBytes,KnownLayout" \
|
|
"${BINDGEN_LINUX_X86_HEADERS}/include/linux/virtio_net.h" \
|
|
-- \
|
|
-isystem "${BINDGEN_LINUX_X86_HEADERS}/include" \
|
|
| replace_linux_int_types \
|
|
> virtio_sys/src/virtio_net.rs
|
|
|
|
bindgen_generate \
|
|
--allowlist-var='VRING_.*' \
|
|
--allowlist-var='VIRTIO_RING_.*' \
|
|
--allowlist-type='vring.*' \
|
|
"${BINDGEN_LINUX_X86_HEADERS}/include/linux/virtio_ring.h" \
|
|
-- \
|
|
-isystem "${BINDGEN_LINUX_X86_HEADERS}/include" \
|
|
| replace_linux_int_types \
|
|
> virtio_sys/src/virtio_ring.rs
|
|
|
|
bindgen_generate \
|
|
--allowlist-var='VIRTIO_.*' \
|
|
--allowlist-type='virtio_.*' \
|
|
"${BINDGEN_LINUX_X86_HEADERS}/include/linux/virtio_mmio.h" \
|
|
-- \
|
|
-isystem "${BINDGEN_LINUX_X86_HEADERS}/include" \
|
|
| replace_linux_int_types \
|
|
> virtio_sys/src/virtio_mmio.rs
|
|
|
|
VIRTIO_VSOCK_EXTRA="// Added by virtio_sys/bindgen.sh
|
|
use data_model::Le16;
|
|
use data_model::Le32;
|
|
use data_model::Le64;
|
|
use zerocopy::FromBytes;
|
|
use zerocopy::Immutable;
|
|
use zerocopy::IntoBytes;
|
|
use zerocopy::KnownLayout;"
|
|
|
|
bindgen_generate \
|
|
--raw-line "${VIRTIO_VSOCK_EXTRA}" \
|
|
--allowlist-var='VIRTIO_VSOCK_.*' \
|
|
--allowlist-type='virtio_vsock_.*' \
|
|
--with-derive-custom "virtio_vsock_event=FromBytes,Immutable,IntoBytes,KnownLayout" \
|
|
"${BINDGEN_LINUX_X86_HEADERS}/include/linux/virtio_vsock.h" \
|
|
-- \
|
|
-isystem "${BINDGEN_LINUX_X86_HEADERS}/include" \
|
|
| replace_linux_int_types \
|
|
| replace_linux_endian_types \
|
|
> virtio_sys/src/virtio_vsock.rs
|
|
|
|
VIRTIO_SCSI_EXTRA="// Added by virtio_sys/bindgen.sh
|
|
use zerocopy::FromBytes;
|
|
use zerocopy::Immutable;
|
|
use zerocopy::IntoBytes;
|
|
use zerocopy::KnownLayout;"
|
|
|
|
bindgen_generate \
|
|
--raw-line "${VIRTIO_SCSI_EXTRA}" \
|
|
--allowlist-var='VIRTIO_SCSI_.*' \
|
|
--allowlist-type='virtio_scsi_.*' \
|
|
--blocklist-type='virtio_scsi_cmd_req_pi' \
|
|
--with-derive-custom "virtio_scsi_config=FromBytes,Immutable,IntoBytes,KnownLayout" \
|
|
--with-derive-custom "virtio_scsi_cmd_req=FromBytes,Immutable,IntoBytes,KnownLayout" \
|
|
--with-derive-custom "virtio_scsi_cmd_resp=FromBytes,Immutable,IntoBytes,KnownLayout" \
|
|
--with-derive-custom "virtio_scsi_ctrl_tmf_req=FromBytes,Immutable,IntoBytes,KnownLayout" \
|
|
--with-derive-custom "virtio_scsi_ctrl_an_req=FromBytes,Immutable,IntoBytes,KnownLayout" \
|
|
--with-derive-custom "virtio_scsi_ctrl_tmf_resp=FromBytes,Immutable,IntoBytes,KnownLayout" \
|
|
--with-derive-custom "virtio_scsi_ctrl_an_resp=FromBytes,Immutable,IntoBytes,KnownLayout" \
|
|
"${BINDGEN_LINUX_X86_HEADERS}/include/linux/virtio_scsi.h" \
|
|
-- \
|
|
-isystem "${BINDGEN_LINUX_X86_HEADERS}/include" \
|
|
| replace_linux_int_types \
|
|
| replace_linux_endian_types \
|
|
> virtio_sys/src/virtio_scsi.rs
|