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
impl Clone for WindowsThreadWaitReason
Source§fn clone(&self) -> WindowsThreadWaitReason
fn clone(&self) -> WindowsThreadWaitReason
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for WindowsThreadWaitReason
Source§impl Debug for WindowsThreadWaitReason
impl Debug for WindowsThreadWaitReason
impl Eq for WindowsThreadWaitReason
Source§impl From<u8> for WindowsThreadWaitReason
impl From<u8> for WindowsThreadWaitReason
Source§impl PartialEq for WindowsThreadWaitReason
impl PartialEq for WindowsThreadWaitReason
Source§fn eq(&self, other: &WindowsThreadWaitReason) -> bool
fn eq(&self, other: &WindowsThreadWaitReason) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for WindowsThreadWaitReason
Auto Trait Implementations§
impl Freeze for WindowsThreadWaitReason
impl RefUnwindSafe for WindowsThreadWaitReason
impl Send for WindowsThreadWaitReason
impl Sync for WindowsThreadWaitReason
impl Unpin for WindowsThreadWaitReason
impl UnsafeUnpin for WindowsThreadWaitReason
impl UnwindSafe for WindowsThreadWaitReason
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.