diff options
author | Alyssa Ross <hi@alyssa.is> | 2020-06-14 20:39:56 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2020-06-15 09:37:11 +0000 |
commit | 2885f9ca1a79d30421deeb025e92ae0118fc6d3a (patch) | |
tree | 7652ba6fed40f3f1add54afc9fe799c7646bf126 /vm_control/src/lib.rs | |
parent | 81f96554ebf490c83a8993065de9b1636b26f916 (diff) | |
download | crosvm-2885f9ca1a79d30421deeb025e92ae0118fc6d3a.tar crosvm-2885f9ca1a79d30421deeb025e92ae0118fc6d3a.tar.gz crosvm-2885f9ca1a79d30421deeb025e92ae0118fc6d3a.tar.bz2 crosvm-2885f9ca1a79d30421deeb025e92ae0118fc6d3a.tar.lz crosvm-2885f9ca1a79d30421deeb025e92ae0118fc6d3a.tar.xz crosvm-2885f9ca1a79d30421deeb025e92ae0118fc6d3a.tar.zst crosvm-2885f9ca1a79d30421deeb025e92ae0118fc6d3a.zip |
recursive serialization
Diffstat (limited to 'vm_control/src/lib.rs')
-rw-r--r-- | vm_control/src/lib.rs | 8 |
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()) } |