Skip to main content

Rseq

Struct Rseq 

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

The restartable sequence for the current thread.

This structure is used to store the restartable sequence information for the current thread. It is registered with the kernel when the thread is created and unregistered when the thread is destroyed.

Implementations§

Source§

impl Rseq

Source

pub unsafe fn get() -> Self

Returns the restartable sequence for the current thread.

§Panics

Panics if the thread has not been registered for restartable sequences. See rseq_register_thread().

§Safety

The returned object must not be used after the current thread calls rseq_unregister_thread().

Source

pub unsafe fn try_get() -> Option<Self>

Returns the restartable sequence for the current thread if registered.

§Safety

The returned object must not be used after the current thread calls rseq_unregister_thread().

Source

pub fn as_ptr(&self) -> *mut zx_rseq_t

Returns a pointer to the zx_rseq_t structure.

The returned pointer is only valid until the current thread calls rseq_unregister_thread().

Useful for accessing the zx_rseq_t structure from inline assembly.

Source

pub unsafe fn current_cpu(&self) -> u32

Reads the current CPU ID.

The current CPU can change at any time. Useful for preparing for a restartable sequence.

§Safety

This method cannot be used after the current thread calls rseq_unregister_thread(). That invariant is required by the safety contract of get() as well.

Source

pub unsafe fn activate( &self, critical_section: RseqCriticalSection, ) -> RseqScope

Activate a critical section.

The critical section is defined by the critical_section parameter. The critical section is active until the returned RseqScope is dropped.

§Safety

The caller must ensure that the returned RseqScope is dropped before calling rseq_unregister_thread().

Trait Implementations§

Source§

impl Clone for Rseq

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Copy for Rseq

Source§

impl Debug for Rseq

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl !Send for Rseq

§

impl !Sync for Rseq

§

impl Freeze for Rseq

§

impl RefUnwindSafe for Rseq

§

impl Unpin for Rseq

§

impl UnsafeUnpin for Rseq

§

impl UnwindSafe for Rseq

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 = !

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

fn try_from(value: U) -> Result<T, !>

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.