-/* Semaphore structure, holds list of FSM machines that are waiting
- for this semaphore. The SilcFSM has *next; pointer that is used
- with SilcList. */
-struct SilcFSMSemaObject {
+/* FSM state status */
+typedef enum {
+ SILC_FSM_ST_CONTINUE, /* Continue immediately to next state */
+ SILC_FSM_ST_YIELD, /* Continue to next state through scheduler */
+ SILC_FSM_ST_WAIT, /* Wait for some async call or timeout */
+ SILC_FSM_ST_FINISH, /* Finish state machine and call destructor
+ through scheduler */
+} SilcFSMStatus;
+
+/* Event structure, holds list of FSM machines that are waiting for this
+ event. The SilcFSM has *next; pointer that is used with SilcList.
+ Internally events act as semaphore counters. */
+struct SilcFSMEventObject {