pub struct Updater<'a, Opcode, Value> { /* private fields */ }
Expand description
Implements an “updater” pattern for ioctl
s.
The ioctl takes a reference to a struct that it reads its input from, then writes output to the same struct.
Implementations§
source§impl<'a, Opcode: CompileTimeOpcode, Value> Updater<'a, Opcode, Value>
impl<'a, Opcode: CompileTimeOpcode, Value> Updater<'a, Opcode, Value>
sourcepub unsafe fn new(value: &'a mut Value) -> Self
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, Opcode: CompileTimeOpcode, T> Ioctl for Updater<'a, Opcode, T>
impl<'a, Opcode: CompileTimeOpcode, T> Ioctl for Updater<'a, Opcode, T>
source§const IS_MUTATING: bool = true
const IS_MUTATING: bool = true
Does the
ioctl
mutate any data in the userspace? Read moresource§fn as_ptr(&mut self) -> *mut c_void
fn as_ptr(&mut self) -> *mut c_void
Get a pointer to the data to be passed to the
ioctl
command. Read moresource§unsafe fn output_from_ptr(_output: IoctlOutput, _ptr: *mut c_void) -> Result<()>
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, Opcode, Value> RefUnwindSafe for Updater<'a, Opcode, Value>where Opcode: RefUnwindSafe, Value: RefUnwindSafe,
impl<'a, Opcode, Value> Send for Updater<'a, Opcode, Value>where Opcode: Send, Value: Send,
impl<'a, Opcode, Value> Sync for Updater<'a, Opcode, Value>where Opcode: Sync, Value: Sync,
impl<'a, Opcode, Value> Unpin for Updater<'a, Opcode, Value>where Opcode: Unpin,
impl<'a, Opcode, Value> !UnwindSafe for Updater<'a, Opcode, Value>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more