[go: up one dir, main page]

Struct Handle

Source
pub struct Handle(/* private fields */);
Expand description

An object representing a Magenta handle.

Internally, it is represented as a 32-bit integer, but this wrapper enforces strict ownership semantics. The Drop implementation closes the handle.

This type represents the most general reference to a kernel object, and can be interconverted to and from more specific types. Those conversions are not enforced in the type system; attempting to use them will result in errors returned by the kernel. These conversions don’t change the underlying representation, but do change the type and thus what operations are available.

Implementations§

Source§

impl Handle

Source

pub unsafe fn from_raw(raw: mx_handle_t) -> Handle

If a raw handle is obtained from some other source, this method converts it into a type-safe owned handle.

Source

pub fn replace(self, rights: Rights) -> Result<Handle, Status>

Trait Implementations§

Source§

impl AsHandleRef for Handle

Source§

fn as_handle_ref(&self) -> HandleRef<'_>

Get a reference to the handle. One important use of such a reference is for object_wait_many.
Source§

fn raw_handle(&self) -> mx_handle_t

Interpret the reference as a raw handle (an integer type). Two distinct handles will have different raw values (so it can perhaps be used as a key in a data structure).
Source§

fn signal_handle( &self, clear_mask: Signals, set_mask: Signals, ) -> Result<(), Status>

Set and clear userspace-accessible signal bits on an object. Wraps the mx_object_signal syscall.
Source§

fn wait_handle( &self, signals: Signals, deadline: mx_time_t, ) -> Result<Signals, Status>

Waits on a handle. Wraps the mx_object_wait_one syscall.
Source§

fn wait_async_handle( &self, port: &Port, key: u64, signals: Signals, options: WaitAsyncOpts, ) -> Result<(), Status>

Causes packet delivery on the given port when the object changes state and matches signals. mx_object_wait_async syscall.
Source§

impl Debug for Handle

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for Handle

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl From<Handle> for Channel

Source§

fn from(handle: Handle) -> Self

Converts to this type from the input type.
Source§

impl From<Handle> for Event

Source§

fn from(handle: Handle) -> Self

Converts to this type from the input type.
Source§

impl From<Handle> for EventPair

Source§

fn from(handle: Handle) -> Self

Converts to this type from the input type.
Source§

impl From<Handle> for Fifo

Source§

fn from(handle: Handle) -> Self

Converts to this type from the input type.
Source§

impl From<Handle> for Job

Source§

fn from(handle: Handle) -> Self

Converts to this type from the input type.
Source§

impl From<Handle> for Port

Source§

fn from(handle: Handle) -> Self

Converts to this type from the input type.
Source§

impl From<Handle> for Process

Source§

fn from(handle: Handle) -> Self

Converts to this type from the input type.
Source§

impl From<Handle> for Socket

Source§

fn from(handle: Handle) -> Self

Converts to this type from the input type.
Source§

impl From<Handle> for Thread

Source§

fn from(handle: Handle) -> Self

Converts to this type from the input type.
Source§

impl From<Handle> for Timer

Source§

fn from(handle: Handle) -> Self

Converts to this type from the input type.
Source§

impl From<Handle> for Vmo

Source§

fn from(handle: Handle) -> Self

Converts to this type from the input type.
Source§

impl HandleBased for Handle

Source§

fn duplicate_handle(&self, rights: Rights) -> Result<Self, Status>

Duplicate a handle, possibly reducing the rights available. Wraps the mx_handle_duplicate syscall.
Source§

fn replace_handle(self, rights: Rights) -> Result<Self, Status>

Create a replacement for a handle, possibly reducing the rights available. This invalidates the original handle. Wraps the mx_handle_replace syscall.
Source§

impl Hash for Handle

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Into<Handle> for Channel

Source§

fn into(self) -> Handle

Converts this type into the (usually inferred) input type.
Source§

impl Into<Handle> for Event

Source§

fn into(self) -> Handle

Converts this type into the (usually inferred) input type.
Source§

impl Into<Handle> for EventPair

Source§

fn into(self) -> Handle

Converts this type into the (usually inferred) input type.
Source§

impl Into<Handle> for Fifo

Source§

fn into(self) -> Handle

Converts this type into the (usually inferred) input type.
Source§

impl Into<Handle> for Job

Source§

fn into(self) -> Handle

Converts this type into the (usually inferred) input type.
Source§

impl Into<Handle> for Port

Source§

fn into(self) -> Handle

Converts this type into the (usually inferred) input type.
Source§

impl Into<Handle> for Process

Source§

fn into(self) -> Handle

Converts this type into the (usually inferred) input type.
Source§

impl Into<Handle> for Socket

Source§

fn into(self) -> Handle

Converts this type into the (usually inferred) input type.
Source§

impl Into<Handle> for Thread

Source§

fn into(self) -> Handle

Converts this type into the (usually inferred) input type.
Source§

impl Into<Handle> for Timer

Source§

fn into(self) -> Handle

Converts this type into the (usually inferred) input type.
Source§

impl Into<Handle> for Vmo

Source§

fn into(self) -> Handle

Converts this type into the (usually inferred) input type.
Source§

impl PartialEq for Handle

Source§

fn eq(&self, other: &Handle) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for Handle

Source§

impl StructuralPartialEq for Handle

Auto Trait Implementations§

§

impl Freeze for Handle

§

impl RefUnwindSafe for Handle

§

impl Send for Handle

§

impl Sync for Handle

§

impl Unpin for Handle

§

impl UnwindSafe for Handle

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.