summary refs log tree commit diff
path: root/vm_control/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vm_control/src/lib.rs')
-rw-r--r--vm_control/src/lib.rs8
1 files changed, 5 insertions, 3 deletions
diff --git a/vm_control/src/lib.rs b/vm_control/src/lib.rs
index 3d92c8b..3ec6be7 100644
--- a/vm_control/src/lib.rs
+++ b/vm_control/src/lib.rs
@@ -20,20 +20,22 @@ use libc::{EINVAL, EIO, ENODEV};
 
 use kvm::{IrqRoute, IrqSource, Vm};
 use msg_socket::{MsgError, MsgOnSocket, MsgResult, MsgSocket, UnixSeqpacketExt};
+use msg_socket2_derive::SerializeWithFds;
 use resources::{Alloc, GpuMemoryDesc, MmioType, SystemAllocator};
 use sys_util::net::UnixSeqpacket;
 use sys_util::{error, Error as SysError, EventFd, GuestAddress, MemoryMapping, MmapError, Result};
 
 /// A data structure that either owns or borrows a file descriptor.
-#[derive(Debug)]
-pub enum MaybeOwnedFd<Owned> {
+#[derive(SerializeWithFds, Debug)]
+#[msg_socket2(strategy = "AsRawFd")]
+pub enum MaybeOwnedFd<Owned: AsRawFd> {
     /// Owned by this enum variant, and will be destructed automatically if not moved out.
     Owned(Owned),
     /// A file descriptor borrwed by this enum.
     Borrowed(RawFd),
 }
 
-impl<Owned> MaybeOwnedFd<Owned> {
+impl<Owned: AsRawFd> MaybeOwnedFd<Owned> {
     pub fn new_borrowed(fd: &dyn AsRawFd) -> Self {
         Self::Borrowed(fd.as_raw_fd())
     }