mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-31 14:23:53 -06:00

Provide an implementation of std::error::Error that bridges the Rust anyhow::Error and std::panic::Location types with QEMU's Error*. It also has several utility methods, analogous to error_propagate(), that convert a Result into a return value + Error** pair. One important difference is that these propagation methods *panic* if *errp is NULL, unlike error_propagate() which eats subsequent errors[1]. The reason for this is that in C you have an error_set*() call at the site where the error is created, and calls to error_propagate() are relatively rare. In Rust instead, even though these functions do "propagate" a qemu_api::Error into a C Error**, there is no error_setg() anywhere that could check for non-NULL errp and call abort(). error_propagate()'s behavior of ignoring subsequent errors is generally considered weird, and there would be a bigger risk of triggering it from Rust code. [1] This is actually a violation of the preconditions of error_propagate(), so it should not happen. But you never know... Reviewed-by: Zhao Liu <zhao1.liu@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
177 lines
3.9 KiB
TOML
177 lines
3.9 KiB
TOML
# This file is automatically @generated by Cargo.
|
|
# It is not intended for manual editing.
|
|
version = 3
|
|
|
|
[[package]]
|
|
name = "anyhow"
|
|
version = "1.0.98"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487"
|
|
|
|
[[package]]
|
|
name = "arbitrary-int"
|
|
version = "1.2.7"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "c84fc003e338a6f69fbd4f7fe9f92b535ff13e9af8997f3b14b6ddff8b1df46d"
|
|
|
|
[[package]]
|
|
name = "bilge"
|
|
version = "0.2.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "dc707ed8ebf81de5cd6c7f48f54b4c8621760926cdf35a57000747c512e67b57"
|
|
dependencies = [
|
|
"arbitrary-int",
|
|
"bilge-impl",
|
|
]
|
|
|
|
[[package]]
|
|
name = "bilge-impl"
|
|
version = "0.2.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "feb11e002038ad243af39c2068c8a72bcf147acf05025dcdb916fcc000adb2d8"
|
|
dependencies = [
|
|
"itertools",
|
|
"proc-macro-error",
|
|
"proc-macro2",
|
|
"quote",
|
|
"syn",
|
|
]
|
|
|
|
[[package]]
|
|
name = "bits"
|
|
version = "0.1.0"
|
|
dependencies = [
|
|
"qemu_api_macros",
|
|
]
|
|
|
|
[[package]]
|
|
name = "either"
|
|
version = "1.12.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b"
|
|
|
|
[[package]]
|
|
name = "foreign"
|
|
version = "0.3.1"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "17ca1b5be8c9d320daf386f1809c7acc0cb09accbae795c2001953fa50585846"
|
|
dependencies = [
|
|
"libc",
|
|
]
|
|
|
|
[[package]]
|
|
name = "hpet"
|
|
version = "0.1.0"
|
|
dependencies = [
|
|
"qemu_api",
|
|
"qemu_api_macros",
|
|
]
|
|
|
|
[[package]]
|
|
name = "itertools"
|
|
version = "0.11.0"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
|
|
dependencies = [
|
|
"either",
|
|
]
|
|
|
|
[[package]]
|
|
name = "libc"
|
|
version = "0.2.162"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01506398"
|
|
|
|
[[package]]
|
|
name = "pl011"
|
|
version = "0.1.0"
|
|
dependencies = [
|
|
"bilge",
|
|
"bilge-impl",
|
|
"bits",
|
|
"qemu_api",
|
|
"qemu_api_macros",
|
|
]
|
|
|
|
[[package]]
|
|
name = "proc-macro-error"
|
|
version = "1.0.4"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
|
|
dependencies = [
|
|
"proc-macro-error-attr",
|
|
"proc-macro2",
|
|
"quote",
|
|
"version_check",
|
|
]
|
|
|
|
[[package]]
|
|
name = "proc-macro-error-attr"
|
|
version = "1.0.4"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
|
|
dependencies = [
|
|
"proc-macro2",
|
|
"quote",
|
|
"version_check",
|
|
]
|
|
|
|
[[package]]
|
|
name = "proc-macro2"
|
|
version = "1.0.84"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "ec96c6a92621310b51366f1e28d05ef11489516e93be030060e5fc12024a49d6"
|
|
dependencies = [
|
|
"unicode-ident",
|
|
]
|
|
|
|
[[package]]
|
|
name = "qemu_api"
|
|
version = "0.1.0"
|
|
dependencies = [
|
|
"anyhow",
|
|
"foreign",
|
|
"libc",
|
|
"qemu_api_macros",
|
|
]
|
|
|
|
[[package]]
|
|
name = "qemu_api_macros"
|
|
version = "0.1.0"
|
|
dependencies = [
|
|
"proc-macro2",
|
|
"quote",
|
|
"syn",
|
|
]
|
|
|
|
[[package]]
|
|
name = "quote"
|
|
version = "1.0.36"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
|
|
dependencies = [
|
|
"proc-macro2",
|
|
]
|
|
|
|
[[package]]
|
|
name = "syn"
|
|
version = "2.0.66"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5"
|
|
dependencies = [
|
|
"proc-macro2",
|
|
"quote",
|
|
"unicode-ident",
|
|
]
|
|
|
|
[[package]]
|
|
name = "unicode-ident"
|
|
version = "1.0.12"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
|
|
|
|
[[package]]
|
|
name = "version_check"
|
|
version = "0.9.4"
|
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
|