Trait Ioctl

unsafe trait Ioctl

A trait defining the properties of an ioctl command.

Objects implementing this trait can be passed to ioctl to make an ioctl call. The contents of the object represent the inputs to the ioctl call. The inputs must be convertible to a pointer through the as_ptr method. In most cases, this involves either casting a number to a pointer, or creating a pointer to the actual data. The latter case is necessary for ioctl calls that modify userspace data.

Safety

This trait is unsafe to implement because it is impossible to guarantee that the ioctl call is safe. The ioctl call may be proprietary, or it may be unsafe to call in certain circumstances.

By implementing this trait, you guarantee that:

Associated Types

type Output

The type of the output data.

Given a pointer, one should be able to construct an instance of this type.

Required Methods

fn opcode(self: &Self) -> Opcode

Get the opcode used by this ioctl command.

There are different types of opcode depending on the operation. See documentation for opcode for more information.

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

Get a pointer to the data to be passed to the ioctl command.

See trait-level documentation for more information.

unsafe fn output_from_ptr(out: IoctlOutput, extract_output: *mut c_void) -> Result<<Self as >::Output>

Cast the output data to the correct type.

Safety

The extract_output value must be the resulting value after a successful ioctl call, and out is the direct return value of an ioctl call that did not fail. In this case extract_output is the pointer that was passed to the ioctl call.

Implementors