This series adds minimal bindings for writing block drivers in Rust and
converts the bochs block driver as an example. Some parts (such as the
open functions) are still essentially C written in Rust syntax, while
other parts already try to provide somewhat idiomatic abstractions.

The main purpose of this series is just to add a starting point for
incremental improvements to the bindings; it's clearly not very polished
yet and ignores some important points like enforcing the graph lock.

Therefore, the main focus in the immediate future after this series
should be cleaning up the bochs driver and the bindings it uses rather
than adding more drivers.

Kevin Wolf (11):
  rust: Build separate qemu_api_tools and qemu_api_system
  meson: Add rust_block_ss and link tools with it
  rust: Add some block layer bindings
  rust/qemu-api: Add wrappers to run futures in QEMU
  rust/block: Add empty crate
  rust/block: Add I/O buffer traits
  block: Add bdrv_open_blockdev_ref_file()
  rust/block: Add driver module
  rust/block: Add read support for block drivers
  bochs-rs: Add bochs block driver reimplementation in Rust
  rust/block: Add format probing

 include/block/block-global-state.h |   4 +
 include/qemu/coroutine-rust.h      |  24 +++
 rust/wrapper-system.h              |  44 ++++
 rust/wrapper.h                     |  14 +-
 block.c                            |  30 ++-
 util/qemu-co-rust-async.c          |  55 +++++
 meson.build                        |  48 ++++-
 rust/Cargo.lock                    |   7 +
 rust/Cargo.toml                    |   1 +
 rust/block/Cargo.toml              |  15 ++
 rust/block/README.md               |   3 +
 rust/block/meson.build             |  19 ++
 rust/block/src/bochs.rs            | 316 +++++++++++++++++++++++++++++
 rust/block/src/driver.rs           | 309 ++++++++++++++++++++++++++++
 rust/block/src/iobuffer.rs         |  94 +++++++++
 rust/block/src/lib.rs              |   5 +
 rust/hw/char/pl011/meson.build     |   3 +-
 rust/meson.build                   |  12 +-
 rust/qemu-api/Cargo.toml           |   1 +
 rust/qemu-api/build.rs             |  10 +-
 rust/qemu-api/meson.build          |  71 ++++---
 rust/qemu-api/src/bindings.rs      |  16 +-
 rust/qemu-api/src/futures.rs       |  78 +++++++
 rust/qemu-api/src/lib.rs           |   5 +
 rust/qemu-api/src/prelude.rs       |   2 +
 rust/qemu-api/src/zeroable.rs      |  11 +
 storage-daemon/meson.build         |   2 +-
 util/meson.build                   |   3 +
 28 files changed, 1146 insertions(+), 56 deletions(-)
 create mode 100644 include/qemu/coroutine-rust.h
 create mode 100644 rust/wrapper-system.h
 create mode 100644 util/qemu-co-rust-async.c
 create mode 100644 rust/block/Cargo.toml
 create mode 100644 rust/block/README.md
 create mode 100644 rust/block/meson.build
 create mode 100644 rust/block/src/bochs.rs
 create mode 100644 rust/block/src/driver.rs
 create mode 100644 rust/block/src/iobuffer.rs
 create mode 100644 rust/block/src/lib.rs
 create mode 100644 rust/qemu-api/src/futures.rs

-- 
2.48.1


Reply via email to