|
ReactOS 0.4.17-dev-1037-g720d112
|
Run to completion engine. The first thread to post into an idle machine drains the queue; everyone else just enqueues. Handlers, entries and hooks run without the lock held. More...
#include <smengine.h>

Public Types | |
| typedef SmState< Machine, Event > | State |
Public Member Functions | |
| VOID | SmInitialize (_In_ const State *Initial) |
| BOOLEAN | SmPost (_In_ Event Ev) |
| VOID | SmContinueOnPassive () |
| const State * | SmCurrent () const |
| ULONG | SmDepth () const |
| const State * | SmFrame (_In_ ULONG Index) const |
| BOOLEAN | SmIsIn (_In_ const State *Ancestor) const |
| BOOLEAN | SmIsPaused () const |
| BOOLEAN | SmIsWaitingForTimer () const |
| ULONG | SmUnexpectedCount () const |
Protected Member Functions | |
| VOID | SmBeginPause () |
| VOID | SmDiscardQueued (_In_ Event Ev) |
| BOOLEAN | SmAccepts (_In_ Event Ev) |
| VOID | SmReference () |
| VOID | SmDereference () |
| VOID | SmQueuePassive () |
| VOID | SmOnDequeue (_In_ Event Ev) |
| VOID | SmStateChanged () |
| BOOLEAN | SmCancelTimer () |
Static Protected Member Functions | |
| static SM_RESULT | SmMakeResult (_In_ SM_RESULT_KIND Kind, _In_ USHORT Ev, _In_opt_ const VOID *Target) |
| static SM_RESULT | SmHandled () |
| static SM_RESULT | SmUnhandled () |
| static SM_RESULT | SmTransition (_In_ const State *Target) |
| static SM_RESULT | SmPaused () |
| static SM_RESULT | SmCall (_In_ const State *Start) |
| static SM_RESULT | SmReturn (_In_ Event Ev) |
Static Protected Attributes | |
| static const BOOLEAN | SmCompletionsFirst = TRUE |
| static const USHORT | SmTimerEventId = SM_NO_EVENT |
Private Member Functions | |
| Machine * | Self () |
| const State * | EffectiveState () const |
| BOOLEAN | IsQueued (_In_ Event Ev) const |
| BOOLEAN | RemoveQueued (_In_ Event Ev) |
| BOOLEAN | Dequeue (_Out_ Event *Ev) |
| VOID | Purge (_In_ const State *Entered, _Inout_ KIRQL *Irql) |
| VOID | Trace (_In_ SM_TRACE_KIND Kind, _In_ USHORT Ev) |
| SM_RESULT | Dispatch (_In_ Event Ev) |
| BOOLEAN | Run (_In_ KIRQL CallerIrql, _In_ USHORT LastEvent, _In_ SM_RESULT Result, _In_opt_ const State *Entered) |
| Applies Result and keeps draining. Called without the lock. Entered is the state whose entry produced Result, if any. Returns TRUE when the machine stopped to wait for passive level or a timer and still owns the reference. | |
Static Private Member Functions | |
| static BOOLEAN | HasFlag (_In_ const State *Target, _In_ ULONG Flag) |
| static BOOLEAN | Discards (_In_ const State *Target, _In_ Event Ev) |
Run to completion engine. The first thread to post into an idle machine drains the queue; everyone else just enqueues. Handlers, entries and hooks run without the lock held.
Machine must provide a static EventInfo[] table indexed by Event. It may hide SmAccepts, SmReference, SmDereference, SmQueuePassive, SmOnDequeue, SmStateChanged, SmCancelTimer, SmCompletionsFirst and SmTimerEventId.
Definition at line 113 of file smengine.h.
Definition at line 116 of file smengine.h.
Definition at line 630 of file smengine.h.
|
staticprivate |
Definition at line 557 of file smengine.h.
Definition at line 721 of file smengine.h.
Definition at line 578 of file smengine.h.
|
staticprivate |
Definition at line 540 of file smengine.h.
|
private |
Definition at line 679 of file smengine.h.
Definition at line 606 of file smengine.h.
|
private |
Applies Result and keeps draining. Called without the lock. Entered is the state whose entry produced Result, if any. Returns TRUE when the machine stopped to wait for passive level or a timer and still owns the reference.
Definition at line 764 of file smengine.h.
Definition at line 280 of file smengine.h.
Definition at line 236 of file smengine.h.
Definition at line 510 of file smengine.h.
|
inlinestaticprotected |
Definition at line 209 of file smengine.h.
Definition at line 273 of file smengine.h.
Definition at line 462 of file smengine.h.
Definition at line 130 of file smengine.h.
Definition at line 136 of file smengine.h.
Definition at line 249 of file smengine.h.
Definition at line 522 of file smengine.h.
Definition at line 142 of file smengine.h.
Definition at line 182 of file smengine.h.
Definition at line 349 of file smengine.h.
Definition at line 490 of file smengine.h.
Definition at line 153 of file smengine.h.
Definition at line 159 of file smengine.h.
|
inlinestaticprotected |
Definition at line 172 of file smengine.h.
Referenced by SmMachine< Machine, Event >::SmCall(), SmMachine< Machine, Event >::SmHandled(), SmMachine< Machine, Event >::SmPaused(), SmMachine< Machine, Event >::SmReturn(), SmMachine< Machine, Event >::SmTransition(), and SmMachine< Machine, Event >::SmUnhandled().
Definition at line 260 of file smengine.h.
Definition at line 202 of file smengine.h.
Definition at line 370 of file smengine.h.
Definition at line 254 of file smengine.h.
Definition at line 244 of file smengine.h.
Definition at line 217 of file smengine.h.
Definition at line 267 of file smengine.h.
|
inlinestaticprotected |
Definition at line 194 of file smengine.h.
Definition at line 165 of file smengine.h.
Definition at line 188 of file smengine.h.
Definition at line 706 of file smengine.h.
Definition at line 335 of file smengine.h.
Definition at line 334 of file smengine.h.
Referenced by SmMachine< Machine, Event >::SmCurrent(), and SmMachine< Machine, Event >::SmDepth().
|
private |
Definition at line 332 of file smengine.h.
Referenced by SmMachine< Machine, Event >::SmCurrent(), and SmMachine< Machine, Event >::SmFrame().
Definition at line 331 of file smengine.h.
Definition at line 337 of file smengine.h.
Referenced by SmMachine< Machine, Event >::SmIsPaused().
|
private |
Definition at line 333 of file smengine.h.
Definition at line 336 of file smengine.h.
|
private |
Definition at line 342 of file smengine.h.
Definition at line 340 of file smengine.h.
Definition at line 341 of file smengine.h.
Referenced by SmMachine< Machine, Event >::SmUnexpectedCount().
Definition at line 338 of file smengine.h.
Definition at line 339 of file smengine.h.
Referenced by SmMachine< Machine, Event >::SmIsWaitingForTimer().
Definition at line 232 of file smengine.h.
|
staticprotected |
Definition at line 233 of file smengine.h.