Skip to main content

WindowsThreadWaitReason

Enum WindowsThreadWaitReason 

Source
pub enum WindowsThreadWaitReason {
Show 44 variants Executive, FreePage, PageIn, PoolAllocation, DelayExecution, Suspended, UserRequest, WrExecutive, WrFreePage, WrPageIn, WrPoolAllocation, WrDelayExecution, WrSuspended, WrUserRequest, WrEventPair, WrQueue, WrLpcReceive, WrLpcReply, WrVirtualMemory, WrPageOut, WrRendezvous, WrKeyedEvent, WrTerminated, WrProcessInSwap, WrCpuRateControl, WrCalloutStack, WrKernel, WrResource, WrPushLock, WrMutex, WrQuantumEnd, WrDispatchInt, WrPreempted, WrYieldExecution, WrFastMutex, WrGuardedMutex, WrRundown, WrAlertByThreadId, WrDeferredPreempt, WrPhysicalFault, WrIoRing, WrMdlCache, WrRcu, Unknown(u8),
}
Expand description

Windows thread wait reason (KWAIT_REASON).

The unprefixed variants Executive..UserRequest are the kernel’s own waits. Their Wr-prefixed duals WrExecutive..WrUserRequest are the same waits performed on behalf of user mode, set when KeWaitForSingleObject is called with WaitMode = UserMode. Variants past WrUserRequest identify specific subsystems such as LPC, MM, scheduler, and locks.

Variants§

§

Executive

Kernel-initiated generic synchronization wait on an executive object.

§

FreePage

Waiting for a free page in the zero/free page lists.

§

PageIn

Waiting for an in-progress hard-fault page read to complete.

§

PoolAllocation

Waiting for paged or nonpaged pool to have memory available.

§

DelayExecution

Self-initiated sleep via KeDelayExecutionThread.

§

Suspended

Thread is suspended via NtSuspendThread or an APC.

§

UserRequest

User-mode wait issued by a routine such as WaitForSingleObject.

§

WrExecutive

Waiting on an executive object on behalf of user mode.

§

WrFreePage

User-mode free-page wait, typically for paging.

§

WrPageIn

Hard page-in wait on behalf of user mode.

§

WrPoolAllocation

Pool-allocation wait on behalf of user mode.

§

WrDelayExecution

User-mode delayed execution via NtDelayExecution.

§

WrSuspended

User-mode thread suspension.

§

WrUserRequest

Alertable user-mode wait on an object.

§

WrEventPair

Waiting on an LPC event pair for a paired client/server handshake.

§

WrQueue

Waiting for a KQUEUE entry used by I/O completion and worker threads.

§

WrLpcReceive

LPC server waiting to receive a message from a client.

§

WrLpcReply

LPC client waiting for a reply from the server.

§

WrVirtualMemory

Waiting on a virtual-memory operation that mutates the address space.

§

WrPageOut

Waiting for modified-page writer to complete a page-out.

§

WrRendezvous

Waiting at a rendezvous point for another thread/processor.

§

WrKeyedEvent

Waiting on a keyed event, used by critical sections.

§

WrTerminated

Thread has terminated. Wait is for teardown bookkeeping.

§

WrProcessInSwap

Waiting for the process to be swapped back into memory.

§

WrCpuRateControl

Blocked by CPU rate-control / job CPU throttling.

§

WrCalloutStack

Waiting on a user-mode stack-switch callout.

§

WrKernel

Generic in-kernel wait not covered by a specific reason.

§

WrResource

Contending for an ERESOURCE executive resource.

§

WrPushLock

Contending for an EX_PUSH_LOCK.

§

WrMutex

Waiting to acquire a KMUTEX / KMUTANT.

§

WrQuantumEnd

Quantum has ended. Rescheduled pending context switch.

§

WrDispatchInt

Awaiting a dispatch interrupt to run the scheduler.

§

WrPreempted

Preempted by a higher-priority thread.

§

WrYieldExecution

Voluntarily yielded CPU via NtYieldExecution.

§

WrFastMutex

Contending for a FAST_MUTEX.

§

WrGuardedMutex

Contending for a KGUARDED_MUTEX.

§

WrRundown

Blocked on an EX_RUNDOWN_REF rundown-protection drain.

§

WrAlertByThreadId

Blocked on NtWaitForAlertByThreadId / thread-ID alert.

§

WrDeferredPreempt

Preemption deferred pending a scheduler decision.

§

WrPhysicalFault

Waiting to service a hardware/physical memory fault.

§

WrIoRing

Blocked on an I/O ring submission/completion.

§

WrMdlCache

Waiting for an MDL cache slot to become available.

§

WrRcu

Blocked inside an RCU grace period.

§

Unknown(u8)

Unknown wait reason value not covered by known variants.

Trait Implementations§

Source§

impl Clone for WindowsThreadWaitReason

Source§

fn clone(&self) -> WindowsThreadWaitReason

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 WindowsThreadWaitReason

Source§

impl Debug for WindowsThreadWaitReason

Source§

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

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

impl Eq for WindowsThreadWaitReason

Source§

impl From<u8> for WindowsThreadWaitReason

Source§

fn from(value: u8) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for WindowsThreadWaitReason

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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 StructuralPartialEq for WindowsThreadWaitReason

Auto Trait Implementations§

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> ArchivePointee for T

Source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> LayoutRaw for T

Source§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
Source§

impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
where T: SharedNiching<N1, N2>, N1: Niching<T>, N2: Niching<T>,

Source§

unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool

Returns whether the given value has been niched. Read more
Source§

fn resolve_niched(out: Place<NichedOption<T, N1>>)

Writes data to out indicating that a T is niched.
Source§

impl<T> Pointee for T

Source§

type Metadata = ()

The metadata type for pointers and references to this type.
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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 = 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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more