summary refs log tree commit diff
path: root/devices/src/virtio/wl.rs
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2020-03-08 22:41:30 +0000
committerAlyssa Ross <hi@alyssa.is>2020-06-15 09:36:14 +0000
commit2507cc57bc0145eb57305e60f6a7c21f3b4c9192 (patch)
treea6b700b920b6b2733ae8049302c613d3eb93a330 /devices/src/virtio/wl.rs
parent3d1bc2e0bb5bae7f32a9fa18b5348295facd5ab6 (diff)
downloadcrosvm-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.rs30
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;