Struct Updater

Source
pub struct Updater<'a, const OPCODE: Opcode, Value> { /* private fields */ }
Expand description

Implements an “updater” pattern for ioctls.

The ioctl takes a reference to a struct that it reads its input from, then writes output to the same struct.

To compute a value for the OPCODE argument, see the functions in the opcode module.

Implementations§

Source§

impl<'a, const OPCODE: Opcode, Value> Updater<'a, OPCODE, Value>

Source

pub unsafe fn new(value: &'a mut Value) -> Self

Create a new pointer updater-style ioctl object.

§Safety
  • OPCODE must provide a valid opcode.
  • For this opcode, Value must be the type that the kernel expects to get.

Trait Implementations§

Source§

impl<'a, const OPCODE: Opcode, T> Ioctl for Updater<'a, OPCODE, T>

Source§

const IS_MUTATING: bool = true

Does the ioctl mutate any data in the userspace? Read more
Source§

type Output = ()

The type of the output data. Read more
Source§

fn opcode(&self) -> Opcode

Get the opcode used by this ioctl command. Read more
Source§

fn as_ptr(&mut self) -> *mut c_void

Get a pointer to the data to be passed to the ioctl command. Read more
Source§

unsafe fn output_from_ptr(_output: IoctlOutput, _ptr: *mut c_void) -> Result<()>

Cast the output data to the correct type. Read more

Auto Trait Implementations§

§

impl<'a, const OPCODE: u32, Value> Freeze for Updater<'a, OPCODE, Value>

§

impl<'a, const OPCODE: u32, Value> RefUnwindSafe for Updater<'a, OPCODE, Value>
where Value: RefUnwindSafe,

§

impl<'a, const OPCODE: u32, Value> Send for Updater<'a, OPCODE, Value>
where Value: Send,

§

impl<'a, const OPCODE: u32, Value> Sync for Updater<'a, OPCODE, Value>
where Value: Sync,

§

impl<'a, const OPCODE: u32, Value> Unpin for Updater<'a, OPCODE, Value>

§

impl<'a, const OPCODE: u32, Value> !UnwindSafe for Updater<'a, OPCODE, Value>

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> 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, 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.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 8 bytes