From 2507cc57bc0145eb57305e60f6a7c21f3b4c9192 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Sun, 8 Mar 2020 22:41:30 +0000 Subject: vm_control: make MaybeOwnedFd generic This will allow more easily sending types other than File over sockets, (e.g., UnixSeqpacket). --- devices/src/virtio/wl.rs | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) (limited to 'devices/src/virtio/wl.rs') diff --git a/devices/src/virtio/wl.rs b/devices/src/virtio/wl.rs index a685e51..a38d0fe 100644 --- a/devices/src/virtio/wl.rs +++ b/devices/src/virtio/wl.rs @@ -77,16 +77,16 @@ use sys_util::net::UnixSeqpacket; #[derive(Debug, MsgOnSocket)] pub struct SingleFd { - pub memfd: MaybeOwnedFd, - pub interrupt: MaybeOwnedFd, - pub interrupt_resample_evt: MaybeOwnedFd, + pub shm: MaybeOwnedFd, + pub interrupt: MaybeOwnedFd, + pub interrupt_resample_evt: MaybeOwnedFd, pub in_queue: Queue, pub out_queue: Queue, - pub vm_socket: MaybeOwnedFd, + pub vm_socket: MaybeOwnedFd, pub use_transition_flags: bool, - pub in_queue_evt: MaybeOwnedFd, - pub out_queue_evt: MaybeOwnedFd, - pub kill_evt: MaybeOwnedFd, + pub in_queue_evt: MaybeOwnedFd, + pub out_queue_evt: MaybeOwnedFd, + pub kill_evt: MaybeOwnedFd, } type Socket = MsgSocket; @@ -1691,18 +1691,16 @@ impl VirtioDevice for Wl { let (ours, theirs) = UnixSeqpacket::pair().expect("pair failed"); if let Err(e) = SOCKET.send(&SingleFd { - memfd: MaybeOwnedFd::Borrowed(mem.as_raw_fd()), - interrupt: MaybeOwnedFd::Borrowed(theirs.as_raw_fd()), - interrupt_resample_evt: MaybeOwnedFd::Borrowed( - interrupt.get_resample_evt().as_raw_fd(), - ), + shm: MaybeOwnedFd::new_borrowed(&mem), + interrupt: MaybeOwnedFd::new_borrowed(&theirs), + interrupt_resample_evt: MaybeOwnedFd::new_borrowed(interrupt.get_resample_evt()), in_queue: queues.remove(0), out_queue: queues.remove(0), - vm_socket: MaybeOwnedFd::Borrowed(vm_socket.as_raw_fd()), + vm_socket: MaybeOwnedFd::new_borrowed(&vm_socket), use_transition_flags, - in_queue_evt: MaybeOwnedFd::Borrowed(queue_evts[0].as_raw_fd()), - out_queue_evt: MaybeOwnedFd::Borrowed(queue_evts[1].as_raw_fd()), - kill_evt: MaybeOwnedFd::Borrowed(kill_evt.as_raw_fd()), + in_queue_evt: MaybeOwnedFd::new_borrowed(&queue_evts[0]), + out_queue_evt: MaybeOwnedFd::new_borrowed(&queue_evts[1]), + kill_evt: MaybeOwnedFd::new_borrowed(&kill_evt), }) { error!("failed to send SingleFd: {}", e); return; -- cgit 1.4.1