rust: add module to convert between success/-errno and io::Result

It is a common convention in QEMU to return a positive value in case of
success, and a negated errno value in case of error.  Unfortunately,
using errno portably in Rust is a bit complicated; on Unix the errno
values are supported natively by io::Error, but on Windows they are not;
so, use the libc crate.

This is a set of utility functions that are used by both chardev and
block layer bindings.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2024-11-14 09:05:38 +01:00
parent 4cfe9edb1b
commit 8a420dd109
6 changed files with 381 additions and 0 deletions

View file

@ -19,6 +19,7 @@ pub mod c_str;
pub mod callbacks;
pub mod cell;
pub mod chardev;
pub mod errno;
pub mod irq;
pub mod memory;
pub mod module;