ReactOS 0.4.17-dev-1037-g720d112
smengine.h File Reference

Go to the source code of this file.

Classes

struct  _SM_EVENT_INFO
 
struct  _SM_RESULT
 
struct  _SM_TRACE
 
struct  SmState< Machine, Event >
 One state. Handler gets every event the state sees. More...
 
class  SmMachine< Machine, Event >
 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...
 

Macros

#define SM_QUEUE_DEPTH   32
 
#define SM_MAX_DEPTH   8
 
#define SM_TRACE_DEPTH   32
 
#define SM_TRACE_MASK   (SM_TRACE_DEPTH - 1)
 
#define SM_NO_EVENT   0xFFFF
 
#define SM_FRAME_INNERMOST   0xFF
 
#define SM_BREAK(Message)   NT_ASSERTMSG(Message, FALSE)
 
#define SM_STATE_TAKES_REQUESTS   0x00000001
 
#define SM_STATE_NEEDS_PASSIVE   0x00000002
 
#define SM_STATE_CRITICAL_ONLY   0x00000004
 
#define SM_STATE_YIELDS_TO_CALLER   0x00000008
 
#define SM_STATE_STOP_TIMER_ON_EXIT   0x00000010
 

Typedefs

typedef enum _SM_EVENT_CLASS SM_EVENT_CLASS
 
typedef struct _SM_EVENT_INFO SM_EVENT_INFO
 
typedef struct _SM_EVENT_INFO * PSM_EVENT_INFO
 
typedef enum _SM_RESULT_KIND SM_RESULT_KIND
 
typedef struct _SM_RESULT SM_RESULT
 
typedef enum _SM_TRACE_KIND SM_TRACE_KIND
 
typedef struct _SM_TRACE SM_TRACE
 
typedef struct _SM_TRACE * PSM_TRACE
 

Enumerations

enum  _SM_EVENT_CLASS { SmEventCompletion , SmEventRequest , SmEventResume , SmEventCritical }
 
enum  _SM_RESULT_KIND {
  SmResultUnhandled , SmResultHandled , SmResultTransition , SmResultPaused ,
  SmResultCall , SmResultReturn
}
 
enum  _SM_TRACE_KIND {
  SmTracePosted , SmTraceRejected , SmTraceDispatched , SmTraceEntered ,
  SmTraceUnhandled , SmTracePaused , SmTraceResumed , SmTraceWaitPassive ,
  SmTraceCalled , SmTraceReturned , SmTraceDiscarded , SmTraceWaitTimer
}
 

Macro Definition Documentation

◆ SM_BREAK

#define SM_BREAK (   Message)    NT_ASSERTMSG(Message, FALSE)

Definition at line 18 of file smengine.h.

◆ SM_FRAME_INNERMOST

#define SM_FRAME_INNERMOST   0xFF

Definition at line 15 of file smengine.h.

◆ SM_MAX_DEPTH

#define SM_MAX_DEPTH   8

Definition at line 11 of file smengine.h.

◆ SM_NO_EVENT

#define SM_NO_EVENT   0xFFFF

Definition at line 14 of file smengine.h.

◆ SM_QUEUE_DEPTH

#define SM_QUEUE_DEPTH   32

Definition at line 10 of file smengine.h.

◆ SM_STATE_CRITICAL_ONLY

#define SM_STATE_CRITICAL_ONLY   0x00000004

Definition at line 41 of file smengine.h.

◆ SM_STATE_NEEDS_PASSIVE

#define SM_STATE_NEEDS_PASSIVE   0x00000002

Definition at line 40 of file smengine.h.

◆ SM_STATE_STOP_TIMER_ON_EXIT

#define SM_STATE_STOP_TIMER_ON_EXIT   0x00000010

Definition at line 43 of file smengine.h.

◆ SM_STATE_TAKES_REQUESTS

#define SM_STATE_TAKES_REQUESTS   0x00000001

Definition at line 39 of file smengine.h.

◆ SM_STATE_YIELDS_TO_CALLER

#define SM_STATE_YIELDS_TO_CALLER   0x00000008

Caller may leave it; caller's flags pick events

Definition at line 42 of file smengine.h.

◆ SM_TRACE_DEPTH

#define SM_TRACE_DEPTH   32

Definition at line 12 of file smengine.h.

◆ SM_TRACE_MASK

#define SM_TRACE_MASK   (SM_TRACE_DEPTH - 1)

Definition at line 13 of file smengine.h.

Typedef Documentation

◆ PSM_EVENT_INFO

◆ PSM_TRACE

◆ SM_EVENT_CLASS

How a posted event is queued.

◆ SM_EVENT_INFO

◆ SM_RESULT

◆ SM_RESULT_KIND

◆ SM_TRACE

◆ SM_TRACE_KIND

Enumeration Type Documentation

◆ _SM_EVENT_CLASS

How a posted event is queued.

Enumerator
SmEventCompletion 

Runs in any state unless it only takes critical events

SmEventRequest 

Waits until the current state takes requests

SmEventResume 

Only valid while paused, runs immediately

SmEventCritical 

Runs in any state

Definition at line 22 of file smengine.h.

23{
enum _SM_EVENT_CLASS SM_EVENT_CLASS
@ SmEventRequest
Definition: smengine.h:25
@ SmEventResume
Definition: smengine.h:26
@ SmEventCompletion
Definition: smengine.h:24
@ SmEventCritical
Definition: smengine.h:27

◆ _SM_RESULT_KIND

Enumerator
SmResultUnhandled 
SmResultHandled 
SmResultTransition 
SmResultPaused 
SmResultCall 
SmResultReturn 

Definition at line 45 of file smengine.h.

46{
enum _SM_RESULT_KIND SM_RESULT_KIND
@ SmResultHandled
Definition: smengine.h:48
@ SmResultPaused
Definition: smengine.h:50
@ SmResultReturn
Definition: smengine.h:52
@ SmResultUnhandled
Definition: smengine.h:47
@ SmResultTransition
Definition: smengine.h:49
@ SmResultCall
Definition: smengine.h:51

◆ _SM_TRACE_KIND

Enumerator
SmTracePosted 
SmTraceRejected 
SmTraceDispatched 
SmTraceEntered 
SmTraceUnhandled 
SmTracePaused 
SmTraceResumed 
SmTraceWaitPassive 
SmTraceCalled 
SmTraceReturned 
SmTraceDiscarded 
SmTraceWaitTimer 

Definition at line 63 of file smengine.h.

64{
enum _SM_TRACE_KIND SM_TRACE_KIND
@ SmTraceEntered
Definition: smengine.h:68
@ SmTraceWaitTimer
Definition: smengine.h:76
@ SmTraceWaitPassive
Definition: smengine.h:72
@ SmTraceDispatched
Definition: smengine.h:67
@ SmTraceRejected
Definition: smengine.h:66
@ SmTraceCalled
Definition: smengine.h:73
@ SmTraceReturned
Definition: smengine.h:74
@ SmTracePaused
Definition: smengine.h:70
@ SmTraceResumed
Definition: smengine.h:71
@ SmTraceUnhandled
Definition: smengine.h:69
@ SmTraceDiscarded
Definition: smengine.h:75
@ SmTracePosted
Definition: smengine.h:65