Emulex Logo
OneCoreā„¢ Storage SDK Release 11.2
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
ocs_sm.h File Reference

Go to the source code of this file.

Detailed Description

Generic state machine framework declarations.

Definition in file ocs_sm.h.

Data Structures

struct  ocs_sm_ctx_t
 

Macros

#define OCS_SM_EVENT_SHIFT   24
 
#define OCS_SM_EVENT_START(id)   ((id) << OCS_SM_EVENT_SHIFT)
 
#define smtrace(...)
 

Typedefs

typedef void *(* ocs_sm_function_t )(ocs_sm_ctx_t *, ocs_sm_event_t, void *)
 

Enumerations

enum  {
  OCS_SM_COMMON = 0, OCS_SM_DOMAIN, OCS_SM_PORT, OCS_SM_LOGIN,
  OCS_SM_LAST
}
 
enum  ocs_sm_event_t {
  OCS_EVT_ENTER = OCS_SM_EVENT_START(OCS_SM_COMMON), OCS_EVT_REENTER, OCS_EVT_EXIT, OCS_EVT_SHUTDOWN,
  OCS_EVT_ALL_CHILD_NODES_FREE, OCS_EVT_RESUME, OCS_EVT_TIMER_EXPIRED, OCS_EVT_RESPONSE = OCS_SM_EVENT_START(OCS_SM_DOMAIN),
  OCS_EVT_ERROR, OCS_EVT_DOMAIN_FOUND, OCS_EVT_DOMAIN_ALLOC_OK, OCS_EVT_DOMAIN_ALLOC_FAIL,
  OCS_EVT_DOMAIN_REQ_ATTACH, OCS_EVT_DOMAIN_ATTACH_OK, OCS_EVT_DOMAIN_ATTACH_FAIL, OCS_EVT_DOMAIN_LOST,
  OCS_EVT_DOMAIN_FREE_OK, OCS_EVT_DOMAIN_FREE_FAIL, OCS_EVT_HAL_DOMAIN_REQ_ATTACH, OCS_EVT_HAL_DOMAIN_REQ_FREE,
  OCS_EVT_SPORT_ALLOC_OK = OCS_SM_EVENT_START(OCS_SM_PORT), OCS_EVT_SPORT_ALLOC_FAIL, OCS_EVT_SPORT_ATTACH_OK, OCS_EVT_SPORT_ATTACH_FAIL,
  OCS_EVT_SPORT_FREE_OK, OCS_EVT_SPORT_FREE_FAIL, OCS_EVT_SPORT_TOPOLOGY_NOTIFY, OCS_EVT_HAL_PORT_ALLOC_OK,
  OCS_EVT_HAL_PORT_ALLOC_FAIL, OCS_EVT_HAL_PORT_ATTACH_OK, OCS_EVT_HAL_PORT_REQ_ATTACH, OCS_EVT_HAL_PORT_REQ_FREE,
  OCS_EVT_HAL_PORT_FREE_OK, OCS_EVT_SRRS_ELS_REQ_OK = OCS_SM_EVENT_START(OCS_SM_LOGIN), OCS_EVT_SRRS_ELS_CMPL_OK, OCS_EVT_SRRS_ELS_REQ_FAIL,
  OCS_EVT_SRRS_ELS_CMPL_FAIL, OCS_EVT_SRRS_ELS_REQ_RJT, OCS_EVT_NODE_ATTACH_OK, OCS_EVT_NODE_ATTACH_FAIL,
  OCS_EVT_NODE_FREE_OK, OCS_EVT_NODE_FREE_FAIL, OCS_EVT_ELS_FRAME, OCS_EVT_ELS_REQ_TIMEOUT,
  OCS_EVT_ELS_REQ_ABORTED, OCS_EVT_ABORT_ELS, OCS_EVT_ELS_ABORT_CMPL, OCS_EVT_ABTS_RCVD,
  OCS_EVT_NODE_MISSING, OCS_EVT_NODE_REFOUND, OCS_EVT_SHUTDOWN_IMPLICIT_LOGO, OCS_EVT_SHUTDOWN_EXPLICIT_LOGO,
  OCS_EVT_PLOGI_RCVD, OCS_EVT_FLOGI_RCVD, OCS_EVT_LOGO_RCVD, OCS_EVT_RRQ_RCVD,
  OCS_EVT_PRLI_RCVD, OCS_EVT_PRLO_RCVD, OCS_EVT_PDISC_RCVD, OCS_EVT_FDISC_RCVD,
  OCS_EVT_ADISC_RCVD, OCS_EVT_RSCN_RCVD, OCS_EVT_SCR_RCVD, OCS_EVT_ELS_RCVD,
  OCS_EVT_FCP_CMD_RCVD, OCS_EVT_RFT_ID_RCVD, OCS_EVT_RFF_ID_RCVD, OCS_EVT_GNN_ID_RCVD,
  OCS_EVT_GPN_ID_RCVD, OCS_EVT_GFPN_ID_RCVD, OCS_EVT_GFF_ID_RCVD, OCS_EVT_GID_FT_RCVD,
  OCS_EVT_GID_PT_RCVD, OCS_EVT_RPN_ID_RCVD, OCS_EVT_RNN_ID_RCVD, OCS_EVT_RCS_ID_RCVD,
  OCS_EVT_RSNN_NN_RCVD, OCS_EVT_RSPN_ID_RCVD, OCS_EVT_RHBA_RCVD, OCS_EVT_RPA_RCVD,
  OCS_EVT_GA_NXT_RCVD, OCS_EVT_GIDPT_DELAY_EXPIRED, OCS_EVT_ABORT_IO, OCS_EVT_ABORT_IO_NO_RESP,
  OCS_EVT_IO_CMPL, OCS_EVT_IO_CMPL_ERRORS, OCS_EVT_RESP_CMPL, OCS_EVT_ABORT_CMPL,
  OCS_EVT_NODE_ACTIVE_IO_LIST_EMPTY, OCS_EVT_NODE_LAST_ACTIVE_IO, OCS_EVT_NODE_DEL_INI_COMPLETE, OCS_EVT_NODE_DEL_TGT_COMPLETE,
  OCS_EVT_IO_ABORTED_BY_TMF, OCS_EVT_IO_ABORT_IGNORED, OCS_EVT_IO_FIRST_BURST, OCS_EVT_IO_FIRST_BURST_ERR,
  OCS_EVT_IO_FIRST_BURST_ABORTED, OCS_EVT_CT_LOOPBACK_RCVD, OCS_EVT_CT_LOOPBACK_RCVD_NO_IO, OCS_EVT_LAST
}
 

Functions

int ocs_sm_post_event (ocs_sm_ctx_t *, ocs_sm_event_t, void *)
 Post an event to a context. More...
 
void ocs_sm_transition (ocs_sm_ctx_t *, ocs_sm_function_t, void *)
 Transition to a new state. More...
 
void ocs_sm_disable (ocs_sm_ctx_t *ctx)
 Disable further state machine processing. More...
 
const char * ocs_sm_event_name (ocs_sm_event_t evt)
 

Variables

const char * ocs_sm_id []
 

Macro Details

#define OCS_SM_EVENT_SHIFT   24

Definition at line 52 of file ocs_sm.h.

#define OCS_SM_EVENT_START (   id)    ((id) << OCS_SM_EVENT_SHIFT)

Definition at line 53 of file ocs_sm.h.

#define smtrace (   ...)

Definition at line 205 of file ocs_sm.h.

Type Details

typedef void*(* ocs_sm_function_t)(ocs_sm_ctx_t *, ocs_sm_event_t, void *)

Definition at line 188 of file ocs_sm.h.

Enumeration Details

anonymous enum

State Machine (SM) IDs.

Enumerator
OCS_SM_COMMON 
OCS_SM_DOMAIN 
OCS_SM_PORT 
OCS_SM_LOGIN 
OCS_SM_LAST 

Definition at line 44 of file ocs_sm.h.

State Machine events.

Enumerator
OCS_EVT_ENTER 
OCS_EVT_REENTER 
OCS_EVT_EXIT 
OCS_EVT_SHUTDOWN 
OCS_EVT_ALL_CHILD_NODES_FREE 
OCS_EVT_RESUME 
OCS_EVT_TIMER_EXPIRED 
OCS_EVT_RESPONSE 
OCS_EVT_ERROR 
OCS_EVT_DOMAIN_FOUND 
OCS_EVT_DOMAIN_ALLOC_OK 
OCS_EVT_DOMAIN_ALLOC_FAIL 
OCS_EVT_DOMAIN_REQ_ATTACH 
OCS_EVT_DOMAIN_ATTACH_OK 
OCS_EVT_DOMAIN_ATTACH_FAIL 
OCS_EVT_DOMAIN_LOST 
OCS_EVT_DOMAIN_FREE_OK 
OCS_EVT_DOMAIN_FREE_FAIL 
OCS_EVT_HAL_DOMAIN_REQ_ATTACH 
OCS_EVT_HAL_DOMAIN_REQ_FREE 
OCS_EVT_SPORT_ALLOC_OK 
OCS_EVT_SPORT_ALLOC_FAIL 
OCS_EVT_SPORT_ATTACH_OK 
OCS_EVT_SPORT_ATTACH_FAIL 
OCS_EVT_SPORT_FREE_OK 
OCS_EVT_SPORT_FREE_FAIL 
OCS_EVT_SPORT_TOPOLOGY_NOTIFY 
OCS_EVT_HAL_PORT_ALLOC_OK 
OCS_EVT_HAL_PORT_ALLOC_FAIL 
OCS_EVT_HAL_PORT_ATTACH_OK 
OCS_EVT_HAL_PORT_REQ_ATTACH 
OCS_EVT_HAL_PORT_REQ_FREE 
OCS_EVT_HAL_PORT_FREE_OK 
OCS_EVT_SRRS_ELS_REQ_OK 
OCS_EVT_SRRS_ELS_CMPL_OK 
OCS_EVT_SRRS_ELS_REQ_FAIL 
OCS_EVT_SRRS_ELS_CMPL_FAIL 
OCS_EVT_SRRS_ELS_REQ_RJT 
OCS_EVT_NODE_ATTACH_OK 
OCS_EVT_NODE_ATTACH_FAIL 
OCS_EVT_NODE_FREE_OK 
OCS_EVT_NODE_FREE_FAIL 
OCS_EVT_ELS_FRAME 
OCS_EVT_ELS_REQ_TIMEOUT 
OCS_EVT_ELS_REQ_ABORTED 
OCS_EVT_ABORT_ELS 

request an ELS IO be aborted

OCS_EVT_ELS_ABORT_CMPL 

ELS abort process complete

OCS_EVT_ABTS_RCVD 
OCS_EVT_NODE_MISSING 

node is not in the GID_PT payload

OCS_EVT_NODE_REFOUND 

node is allocated and in the GID_PT payload

OCS_EVT_SHUTDOWN_IMPLICIT_LOGO 

node shutting down due to PLOGI recvd (implicit logo)

OCS_EVT_SHUTDOWN_EXPLICIT_LOGO 

node shutting down due to LOGO recvd/sent (explicit logo)

OCS_EVT_PLOGI_RCVD 
OCS_EVT_FLOGI_RCVD 
OCS_EVT_LOGO_RCVD 
OCS_EVT_RRQ_RCVD 
OCS_EVT_PRLI_RCVD 
OCS_EVT_PRLO_RCVD 
OCS_EVT_PDISC_RCVD 
OCS_EVT_FDISC_RCVD 
OCS_EVT_ADISC_RCVD 
OCS_EVT_RSCN_RCVD 
OCS_EVT_SCR_RCVD 
OCS_EVT_ELS_RCVD 
OCS_EVT_FCP_CMD_RCVD 
OCS_EVT_RFT_ID_RCVD 
OCS_EVT_RFF_ID_RCVD 
OCS_EVT_GNN_ID_RCVD 
OCS_EVT_GPN_ID_RCVD 
OCS_EVT_GFPN_ID_RCVD 
OCS_EVT_GFF_ID_RCVD 
OCS_EVT_GID_FT_RCVD 
OCS_EVT_GID_PT_RCVD 
OCS_EVT_RPN_ID_RCVD 
OCS_EVT_RNN_ID_RCVD 
OCS_EVT_RCS_ID_RCVD 
OCS_EVT_RSNN_NN_RCVD 
OCS_EVT_RSPN_ID_RCVD 
OCS_EVT_RHBA_RCVD 
OCS_EVT_RPA_RCVD 
OCS_EVT_GA_NXT_RCVD 
OCS_EVT_GIDPT_DELAY_EXPIRED 
OCS_EVT_ABORT_IO 
OCS_EVT_ABORT_IO_NO_RESP 
OCS_EVT_IO_CMPL 
OCS_EVT_IO_CMPL_ERRORS 
OCS_EVT_RESP_CMPL 
OCS_EVT_ABORT_CMPL 
OCS_EVT_NODE_ACTIVE_IO_LIST_EMPTY 
OCS_EVT_NODE_LAST_ACTIVE_IO 
OCS_EVT_NODE_DEL_INI_COMPLETE 
OCS_EVT_NODE_DEL_TGT_COMPLETE 
OCS_EVT_IO_ABORTED_BY_TMF 
OCS_EVT_IO_ABORT_IGNORED 
OCS_EVT_IO_FIRST_BURST 
OCS_EVT_IO_FIRST_BURST_ERR 
OCS_EVT_IO_FIRST_BURST_ABORTED 
OCS_EVT_CT_LOOPBACK_RCVD 
OCS_EVT_CT_LOOPBACK_RCVD_NO_IO 
OCS_EVT_LAST 

Definition at line 60 of file ocs_sm.h.

Function Details

void ocs_sm_disable ( ocs_sm_ctx_t *  ctx)

Disable further state machine processing.

Definition at line 87 of file ocs_sm.c.

const char* ocs_sm_event_name ( ocs_sm_event_t  evt)

Definition at line 92 of file ocs_sm.c.

int ocs_sm_post_event ( ocs_sm_ctx_t *  ctx,
ocs_sm_event_t  evt,
void *  data 
)

Post an event to a context.

Parameters
ctxState machine context
evtEvent to post
dataEvent-specific data (if any)
Returns
0 if successfully posted event; -1 if state machine is disabled

Definition at line 58 of file ocs_sm.c.

void ocs_sm_transition ( ocs_sm_ctx_t *  ,
ocs_sm_function_t  ,
void *   
)

Transition to a new state.

Definition at line 72 of file ocs_sm.c.

Variable Details

const char* ocs_sm_id[]

String format of the above enums.

Definition at line 41 of file ocs_sm.c.