mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2024-11-25 05:03:05 +00:00
304e731cdb
This allows code to create references to traits such as `&dyn Vcpu` for `&dyn IrqChip`. This also allows keeping such traits inside of opaque `Box` like wrappers. To achieve this, trait methods referencing `Self` have an additonal `where` clause that restricts them to sized types. Associated types are removed and replaced with their trait equivalents (as parameters) or an opaque Box (as return values). To work around certain cases where a concrete type is needed, such as for KVM based `IrqChip` impls, the `downcast_rs` trait is used to allow `dynamic_cast` style casting. The binary size impact of this change is small. For comparison, here is the size change with this commit: armv7a -0.49% (-9 kiB) aarch64 -0.17% (-3 kiB) x86_64 +1.77% (+40 KiB) BUG=None TEST=build_test Cq-Depend: chromium:2466660 Change-Id: I1a408734832d2971ea2979c1bc64b2ffe051b02d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2439298 Reviewed-by: Zach Reizner <zachr@chromium.org> Tested-by: Zach Reizner <zachr@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Zach Reizner <zachr@chromium.org>
18 lines
454 B
TOML
18 lines
454 B
TOML
[package]
|
|
name = "hypervisor"
|
|
version = "0.1.0"
|
|
authors = ["The Chromium OS Authors"]
|
|
edition = "2018"
|
|
|
|
[dependencies]
|
|
bit_field = { path = "../bit_field" }
|
|
data_model = { path = "../data_model" }
|
|
downcast-rs = "1.2.0"
|
|
enumn = { path = "../enumn" }
|
|
kvm = { path = "../kvm" }
|
|
kvm_sys = { path = "../kvm_sys" }
|
|
libc = "*"
|
|
msg_socket = { path = "../msg_socket" }
|
|
sync = { path = "../sync" }
|
|
base = { path = "../base" }
|
|
vm_memory = { path = "../vm_memory" }
|