diff options
author | Alyssa Ross <hi@alyssa.is> | 2020-03-08 22:41:30 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2020-06-15 09:36:14 +0000 |
commit | 2507cc57bc0145eb57305e60f6a7c21f3b4c9192 (patch) | |
tree | a6b700b920b6b2733ae8049302c613d3eb93a330 /devices/src/virtio/wl.rs | |
parent | 3d1bc2e0bb5bae7f32a9fa18b5348295facd5ab6 (diff) | |
download | crosvm-2507cc57bc0145eb57305e60f6a7c21f3b4c9192.tar crosvm-2507cc57bc0145eb57305e60f6a7c21f3b4c9192.tar.gz crosvm-2507cc57bc0145eb57305e60f6a7c21f3b4c9192.tar.bz2 crosvm-2507cc57bc0145eb57305e60f6a7c21f3b4c9192.tar.lz crosvm-2507cc57bc0145eb57305e60f6a7c21f3b4c9192.tar.xz crosvm-2507cc57bc0145eb57305e60f6a7c21f3b4c9192.tar.zst crosvm-2507cc57bc0145eb57305e60f6a7c21f3b4c9192.zip |
vm_control: make MaybeOwnedFd generic
This will allow more easily sending types other than File over sockets, (e.g., UnixSeqpacket).
Diffstat (limited to 'devices/src/virtio/wl.rs')
-rw-r--r-- | devices/src/virtio/wl.rs | 30 |
1 files changed, 14 insertions, 16 deletions
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<SharedMemory>, + pub interrupt: MaybeOwnedFd<UnixSeqpacket>, + pub interrupt_resample_evt: MaybeOwnedFd<EventFd>, pub in_queue: Queue, pub out_queue: Queue, - pub vm_socket: MaybeOwnedFd, + pub vm_socket: MaybeOwnedFd<UnixSeqpacket>, pub use_transition_flags: bool, - pub in_queue_evt: MaybeOwnedFd, - pub out_queue_evt: MaybeOwnedFd, - pub kill_evt: MaybeOwnedFd, + pub in_queue_evt: MaybeOwnedFd<EventFd>, + pub out_queue_evt: MaybeOwnedFd<EventFd>, + pub kill_evt: MaybeOwnedFd<EventFd>, } type Socket = MsgSocket<SingleFd, ()>; @@ -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; |