// Copyright 2020 The Chromium OS Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. pub use sys_util::*; mod async_types; mod event; mod ioctl; mod mmap; mod shm; mod timer; mod tube; mod wait_context; pub use async_types::*; pub use event::{Event, EventReadResult, ScopedEvent}; pub use ioctl::{ ioctl, ioctl_with_mut_ptr, ioctl_with_mut_ref, ioctl_with_ptr, ioctl_with_ref, ioctl_with_val, }; pub use mmap::Unix as MemoryMappingUnix; pub use mmap::{MemoryMapping, MemoryMappingBuilder, MemoryMappingBuilderUnix}; pub use shm::{SharedMemory, Unix as SharedMemoryUnix}; pub use sys_util::ioctl::*; pub use sys_util::{ volatile_at_impl, volatile_impl, FileAllocate, FileGetLen, FileReadWriteAtVolatile, FileReadWriteVolatile, FileSetLen, FileSync, WriteZeroesAt, }; pub use timer::{FakeTimer, Timer}; pub use tube::{AsyncTube, Error as TubeError, Result as TubeResult, Tube}; pub use wait_context::{EventToken, EventType, TriggeredEvent, WaitContext}; /// Wraps an AsRawDescriptor in the simple Descriptor struct, which /// has AsRawFd methods for interfacing with sys_util pub fn wrap_descriptor(descriptor: &dyn AsRawDescriptor) -> Descriptor { Descriptor(descriptor.as_raw_descriptor()) } /// Verifies that |raw_descriptor| is actually owned by this process and duplicates it /// to ensure that we have a unique handle to it. pub fn validate_raw_descriptor(raw_descriptor: RawDescriptor) -> Result { validate_raw_fd(raw_descriptor) } /// A trait similar to `AsRawDescriptor` but supports an arbitrary number of descriptors. pub trait AsRawDescriptors { fn as_raw_descriptors(&self) -> Vec; } impl AsRawDescriptors for T where T: AsRawDescriptor, { fn as_raw_descriptors(&self) -> Vec { vec![self.as_raw_descriptor()] } }