EventFD

Struct EventFD 

Source
pub struct EventFD { /* private fields */ }
Expand description

An instance of an eventfd. This is a Linux-specific mechanism for publishing events from the kernel.

Implementations§

Source§

impl EventFD

Source

pub fn new(initval: u32, flags: EfdFlags) -> Result<EventFD>

Create a new EventFD. Flags is the bitwise OR of EFD_* constants, or 0 for no flags. The underlying file descriptor is closed when the EventFD instance’s lifetime ends.

TODO: work out how to integrate this FD into the wider world of fds. There’s currently no way to poll/select on the fd.

Source

pub fn read(&self) -> Result<u64>

Read the current value of the eventfd. This will block until the value is non-zero. In semaphore mode this will only ever decrement the count by 1 and return 1; otherwise it atomically returns the current value and sets it to zero.

Source

pub fn write(&self, val: u64) -> Result<()>

Add to the current value. Blocks if the value would wrap u64.

Source

pub fn events(&self) -> Receiver<u64>

Return a stream of events.

The channel has a synchronous sender because there’s no point in building up a queue of events; if this task blocks on send, the event state will still update.

The task will exit if the receiver end is shut down.

This will be a CPU-spin loop if the EventFD is created non-blocking.

XXX FIXME This has no way of terminating except if the other end closes the connection, and only then if we’re not blocked in the read()…

Trait Implementations§

Source§

impl AsRawFd for EventFD

Source§

fn as_raw_fd(&self) -> RawFd

Return the raw underlying fd. The caller must make sure self’s lifetime is longer than any users of the fd.

Source§

impl Clone for EventFD

Construct a linked clone of an existing EventFD. Once created, the new instance interacts with the original in a way that’s indistinguishable from the original.

Source§

fn clone(&self) -> EventFD

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Drop for EventFD

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl Send for EventFD

Source§

impl Sync for EventFD

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.