diff --git a/src/runtime-rs/Cargo.lock b/src/runtime-rs/Cargo.lock index 598d1940a9..24521f1dea 100644 --- a/src/runtime-rs/Cargo.lock +++ b/src/runtime-rs/Cargo.lock @@ -534,9 +534,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.4" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53" +checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -780,6 +780,7 @@ version = "0.1.0" dependencies = [ "arc-swap", "bytes 1.1.0", + "crossbeam-channel", "dbs-address-space", "dbs-allocator", "dbs-arch", @@ -1256,6 +1257,7 @@ dependencies = [ "anyhow", "async-trait", "ch-config", + "crossbeam-channel", "dbs-utils", "dragonball", "futures 0.3.26", diff --git a/src/runtime-rs/crates/agent/src/sock/hybrid_vsock.rs b/src/runtime-rs/crates/agent/src/sock/hybrid_vsock.rs index 59e93a64d2..1b19a65b0e 100644 --- a/src/runtime-rs/crates/agent/src/sock/hybrid_vsock.rs +++ b/src/runtime-rs/crates/agent/src/sock/hybrid_vsock.rs @@ -15,9 +15,6 @@ use tokio::{ use super::{ConnectConfig, Sock, Stream}; -unsafe impl Send for HybridVsock {} -unsafe impl Sync for HybridVsock {} - #[derive(Debug, PartialEq)] pub struct HybridVsock { uds: String, diff --git a/src/runtime-rs/crates/agent/src/sock/vsock.rs b/src/runtime-rs/crates/agent/src/sock/vsock.rs index 52ec1eb0b1..1fbac463d0 100644 --- a/src/runtime-rs/crates/agent/src/sock/vsock.rs +++ b/src/runtime-rs/crates/agent/src/sock/vsock.rs @@ -16,9 +16,6 @@ use tokio::net::UnixStream; use super::{ConnectConfig, Sock, Stream}; -unsafe impl Send for Vsock {} -unsafe impl Sync for Vsock {} - #[derive(Debug, PartialEq)] pub struct Vsock { vsock_cid: u32, diff --git a/src/runtime-rs/crates/hypervisor/Cargo.toml b/src/runtime-rs/crates/hypervisor/Cargo.toml index 7bd49dd8be..c06b6c404b 100644 --- a/src/runtime-rs/crates/hypervisor/Cargo.toml +++ b/src/runtime-rs/crates/hypervisor/Cargo.toml @@ -36,6 +36,7 @@ ch-config = { path = "ch-config", optional = true } futures = "0.3.25" safe-path = "0.1.0" +crossbeam-channel = "0.5.6" [features] default = [] diff --git a/src/runtime-rs/crates/hypervisor/src/ch/inner.rs b/src/runtime-rs/crates/hypervisor/src/ch/inner.rs index 7f65ac11b5..b2bd321764 100644 --- a/src/runtime-rs/crates/hypervisor/src/ch/inner.rs +++ b/src/runtime-rs/crates/hypervisor/src/ch/inner.rs @@ -53,9 +53,6 @@ pub struct CloudHypervisorInner { pub(crate) tasks: Option>>>, } -unsafe impl Send for CloudHypervisorInner {} -unsafe impl Sync for CloudHypervisorInner {} - const CH_DEFAULT_TIMEOUT_SECS: u32 = 10; impl CloudHypervisorInner { diff --git a/src/runtime-rs/crates/hypervisor/src/ch/mod.rs b/src/runtime-rs/crates/hypervisor/src/ch/mod.rs index d589c18dfe..8e754415d7 100644 --- a/src/runtime-rs/crates/hypervisor/src/ch/mod.rs +++ b/src/runtime-rs/crates/hypervisor/src/ch/mod.rs @@ -33,9 +33,6 @@ pub struct CloudHypervisor { inner: Arc>, } -unsafe impl Send for CloudHypervisor {} -unsafe impl Sync for CloudHypervisor {} - impl CloudHypervisor { pub fn new() -> Self { Self { diff --git a/src/runtime-rs/crates/hypervisor/src/dragonball/inner.rs b/src/runtime-rs/crates/hypervisor/src/dragonball/inner.rs index 849ec4a2bf..d2d2cd86dc 100644 --- a/src/runtime-rs/crates/hypervisor/src/dragonball/inner.rs +++ b/src/runtime-rs/crates/hypervisor/src/dragonball/inner.rs @@ -27,7 +27,6 @@ use std::{collections::HashSet, fs::create_dir_all, path::PathBuf}; const DRAGONBALL_KERNEL: &str = "vmlinux"; const DRAGONBALL_ROOT_FS: &str = "rootfs"; -unsafe impl Sync for DragonballInner {} pub struct DragonballInner { /// sandbox id pub(crate) id: String, diff --git a/src/runtime-rs/crates/hypervisor/src/dragonball/vmm_instance.rs b/src/runtime-rs/crates/hypervisor/src/dragonball/vmm_instance.rs index 9837ea6677..f0d613938d 100644 --- a/src/runtime-rs/crates/hypervisor/src/dragonball/vmm_instance.rs +++ b/src/runtime-rs/crates/hypervisor/src/dragonball/vmm_instance.rs @@ -7,14 +7,12 @@ use std::{ fs::{File, OpenOptions}, os::unix::{io::IntoRawFd, prelude::AsRawFd}, - sync::{ - mpsc::{channel, Receiver, Sender}, - Arc, Mutex, RwLock, - }, + sync::{Arc, Mutex, RwLock}, thread, }; use anyhow::{anyhow, Context, Result}; +use crossbeam_channel::{unbounded, Receiver, Sender}; use dragonball::{ api::v1::{ BlockDeviceConfigInfo, BootSourceConfig, FsDeviceConfigInfo, FsMountConfigInfo, @@ -86,8 +84,8 @@ impl VmmInstance { pub fn run_vmm_server(&mut self, id: &str, netns: Option) -> Result<()> { let kvm = OpenOptions::new().read(true).write(true).open(KVM_DEVICE)?; - let (to_vmm, from_runtime) = channel(); - let (to_runtime, from_vmm) = channel(); + let (to_vmm, from_runtime) = unbounded(); + let (to_runtime, from_vmm) = unbounded(); self.set_instance_id(id); diff --git a/src/runtime-rs/crates/hypervisor/src/qemu/inner.rs b/src/runtime-rs/crates/hypervisor/src/qemu/inner.rs index d985ba724a..e298e801bd 100644 --- a/src/runtime-rs/crates/hypervisor/src/qemu/inner.rs +++ b/src/runtime-rs/crates/hypervisor/src/qemu/inner.rs @@ -12,9 +12,6 @@ const VSOCK_SCHEME: &str = "vsock"; const VSOCK_AGENT_CID: u32 = 3; const VSOCK_AGENT_PORT: u32 = 1024; -unsafe impl Send for QemuInner {} -unsafe impl Sync for QemuInner {} - pub struct QemuInner { config: HypervisorConfig, } diff --git a/src/runtime-rs/crates/runtimes/common/src/message.rs b/src/runtime-rs/crates/runtimes/common/src/message.rs index 856a6e5990..622d5a1620 100644 --- a/src/runtime-rs/crates/runtimes/common/src/message.rs +++ b/src/runtime-rs/crates/runtimes/common/src/message.rs @@ -17,12 +17,9 @@ pub enum Action { Start, Stop, Shutdown, - Event(Arc), + Event(Arc), } -unsafe impl Send for Message {} -unsafe impl Sync for Message {} - #[derive(Debug)] pub struct Message { pub action: Action,