25 #ifndef __MOTR_SM_SM_H__ 26 #define __MOTR_SM_SM_H__ 272 struct m0_sm_state_stats;
794 int (*cb)(
void *),
void *
data);
808 uint64_t
id, uint64_t
counter);
M0_INTERNAL void m0_sm_conf_init(struct m0_sm_conf *conf)
static struct m0_semaphore wait
M0_INTERNAL void m0_sm_fail(struct m0_sm *mach, int fail_state, int32_t rc)
void(* sd_ex)(struct m0_sm *mach)
M0_INTERNAL int m0_sm_addb2_init(struct m0_sm_conf *conf, uint64_t id, uint64_t counter)
int(* sd_in)(struct m0_sm *mach)
void(* sa_cb)(struct m0_sm_group *grp, struct m0_sm_ast *)
struct m0_sm_group_addb2 * s_addb2
static struct m0_sm_group * grp
M0_INTERNAL void m0_sm_timeout_init(struct m0_sm_timeout *to)
M0_INTERNAL void m0_sm_ast_wait(struct m0_sm_ast_wait *wait)
M0_INTERNAL void m0_sm_ast_post(struct m0_sm_group *grp, struct m0_sm_ast *ast)
M0_INTERNAL void m0_sm_group_unlock_rec(struct m0_sm_group *grp, bool runast)
struct m0_sm_ast * s_forkq
M0_INTERNAL void m0_sm_ast_wait_init(struct m0_sm_ast_wait *wait, struct m0_mutex *ch_guard)
bool(* sd_invariant)(const struct m0_sm *mach)
M0_INTERNAL const char * m0_sm_state_name(const struct m0_sm *mach, int state)
M0_INTERNAL void m0_sm_conf_trans_extend(const struct m0_sm_conf *base, struct m0_sm_conf *sub)
M0_INTERNAL void m0_sm_conf_extend(const struct m0_sm_state_descr *base, struct m0_sm_state_descr *sub, uint32_t nr)
static struct m0_addb2_mach * mach
struct m0_addb2_hist as_hist[0]
M0_INTERNAL bool m0_sm_addb2_counter_init(struct m0_sm *sm)
M0_INTERNAL void m0_sm_group_fini(struct m0_sm_group *grp)
M0_INTERNAL int m0_sm_timedwait(struct m0_sm *mach, uint64_t states, m0_time_t deadline)
static struct m0_sm_ast ast[NR]
M0_INTERNAL void m0_sm_group_unlock(struct m0_sm_group *grp)
struct m0_sm_trans_descr * scf_trans
uint64_t scf_addb2_counter
M0_INTERNAL bool m0_sm_timer_is_armed(const struct m0_sm_timer *timer)
struct m0_atomic64 aw_active
int m0_sm_group_call(struct m0_sm_group *group, int(*cb)(void *), void *data)
M0_INTERNAL void m0_sm_ast_wait_loop(struct m0_sm_ast_wait *wait, struct m0_clink *clink)
M0_INTERNAL void m0_sm_group_init(struct m0_sm_group *grp)
struct m0_sm_group * tr_grp
void m0_sm_state_set(struct m0_sm *mach, int state)
int8_t sd_trans[M0_SM_MAX_STATES]
struct m0_sm_addb2_stats * sm_addb2_stats
struct m0_sm_group * sm_grp
M0_INTERNAL void m0_sm_addb2_fini(struct m0_sm_conf *conf)
struct m0_sm_ast * sa_next
static struct m0_clink clink[RDWR_REQUEST_MAX]
struct m0_addb2_hist ga_forq_hist
M0_INTERNAL int m0_sm_timeout_arm(struct m0_sm *mach, struct m0_sm_timeout *to, m0_time_t timeout, int state, uint64_t bitmask)
M0_INTERNAL void m0_sm_ast_wait_post(struct m0_sm_ast_wait *wait, struct m0_sm_group *grp, struct m0_sm_ast *ast)
M0_INTERNAL void m0_sm_timeout_fini(struct m0_sm_timeout *to)
struct m0_sm_state_descr * scf_state
M0_INTERNAL void m0_sm_timer_cancel(struct m0_sm_timer *timer)
M0_INTERNAL void m0_sm_init(struct m0_sm *mach, const struct m0_sm_conf *conf, uint32_t state, struct m0_sm_group *grp)
struct m0_sm_timer st_timer
M0_INTERNAL void m0_sm_ast_wait_fini(struct m0_sm_ast_wait *wait)
M0_INTERNAL void m0_sm_conf_print(const struct m0_sm_conf *conf)
M0_INTERNAL void m0_sm_move(struct m0_sm *mach, int32_t rc, int state)
bool sm_invariant_chk_off
M0_INTERNAL void m0_sm_ast_wait_prepare(struct m0_sm_ast_wait *wait, struct m0_clink *clink)
M0_INTERNAL void m0_sm_group_lock(struct m0_sm_group *grp)
M0_INTERNAL void m0_sm_ast_cancel(struct m0_sm_group *grp, struct m0_sm_ast *ast)
M0_INTERNAL void m0_sm_conf_fini(struct m0_sm_conf *conf)
M0_INTERNAL bool m0_sm_conf_is_initialized(const struct m0_sm_conf *conf)
M0_INTERNAL void m0_sm_timer_fini(struct m0_sm_timer *timer)
M0_INTERNAL void m0_sm_asts_run(struct m0_sm_group *grp)
M0_INTERNAL bool m0_sm_timeout_is_armed(const struct m0_sm_timeout *to)
M0_INTERNAL void m0_sm_timer_init(struct m0_sm_timer *timer)
M0_INTERNAL uint64_t m0_sm_id_get(const struct m0_sm *sm)
void(* tr_cb)(struct m0_sm_timer *)
M0_INTERNAL void m0_sm_ast_wait_signal(struct m0_sm_ast_wait *wait)
M0_INTERNAL bool m0_sm_group_is_locked(const struct m0_sm_group *grp)
M0_INTERNAL int m0_sm_timer_start(struct m0_sm_timer *timer, struct m0_sm_group *group, void(*cb)(struct m0_sm_timer *), m0_time_t deadline)
static struct m0_sm_state_descr states[C_NR]
const struct m0_sm_conf * sm_conf
struct m0_mutex * ch_guard
M0_INTERNAL void m0_sm_ast_wait_complete(struct m0_sm_ast_wait *wait, struct m0_clink *clink)
M0_INTERNAL const char * m0_sm_conf_state_name(const struct m0_sm_conf *conf, int state)
M0_INTERNAL void m0_sm_fini(struct m0_sm *mach)
M0_INTERNAL bool m0_sm_invariant(const struct m0_sm *mach)
M0_INTERNAL void m0_sm_group_lock_rec(struct m0_sm_group *grp, bool runast)