#ifndef _STMF_STATE_H
#define _STMF_STATE_H
#ifdef __cplusplus
extern "C" {
#endif
typedef struct stmf_state {
kmutex_t stmf_lock;
kcondvar_t stmf_cv;
dev_info_t *stmf_dip;
stmf_i_lu_provider_t *stmf_ilplist;
stmf_i_port_provider_t *stmf_ipplist;
stmf_i_lu_t *stmf_ilulist;
stmf_i_local_port_t *stmf_ilportlist;
id_space_t *stmf_ilport_inst_space;
avl_tree_t stmf_irportlist;
id_space_t *stmf_irport_inst_space;
int stmf_nlps;
int stmf_npps;
int stmf_nlus;
int stmf_nlports;
uint8_t stmf_service_running:1,
stmf_inventory_locked:1,
stmf_exclusive_open:1,
stmf_opened:1,
stmf_process_initial_luns:1,
rsvd:3;
uint8_t stmf_config_state;
uint8_t stmf_alua_state;
uint16_t stmf_alua_node;
uint8_t stmf_default_lu_state;
uint8_t stmf_default_lport_state;
ddi_taskq_t *stmf_svc_taskq;
uint32_t stmf_svc_flags;
stmf_i_lu_t *stmf_svc_ilu_draining;
stmf_i_lu_t *stmf_svc_ilu_timing;
list_t stmf_svc_list;
stmf_id_list_t stmf_hg_list;
stmf_id_list_t stmf_tg_list;
stmf_id_list_t stmf_luid_list;
stmf_ver_tg_t *stmf_ver_tg_head;
stmf_pp_data_t *stmf_ppdlist;
} stmf_state_t;
#define STMF_SVC_STARTED 1
#define STMF_SVC_ACTIVE 2
#define STMF_SVC_TERMINATE 4
typedef struct stmf_svc_req {
list_node_t svc_list_entry;
int svc_req_alloc_size;
int svc_cmd;
void *svc_obj;
struct stmf_state_change_info svc_info;
} stmf_svc_req_t;
extern stmf_state_t stmf_state;
#ifdef __cplusplus
}
#endif
#endif