Motr  M0
sm.h File Reference
#include "lib/types.h"
#include "lib/atomic.h"
#include "lib/time.h"
#include "lib/timer.h"
#include "lib/semaphore.h"
#include "lib/chan.h"
#include "lib/mutex.h"
#include "lib/tlist.h"
#include "addb2/histogram.h"
Include dependency graph for sm.h:

Go to the source code of this file.

Data Structures

struct  m0_sm
 
struct  m0_sm_conf
 
struct  m0_sm_state_descr
 
struct  m0_sm_trans_descr
 
struct  m0_sm_ast
 
struct  m0_sm_group
 
struct  m0_sm_timer
 
struct  m0_sm_timeout
 
struct  m0_sm_addb2_stats
 
struct  m0_sm_group_addb2
 
struct  m0_sm_ast_wait
 

Macros

#define __MOTR_SM_SM_H__
 

Enumerations

enum  { M0_SM_MAX_STATES = 64 }
 
enum  m0_sm_state_descr_flags { M0_SDF_INITIAL = 1 << 0, M0_SDF_FAILURE = 1 << 1, M0_SDF_TERMINAL = 1 << 2, M0_SDF_FINAL = 1 << 3 }
 
enum  m0_sm_return { M0_SM_BREAK = -1 }
 

Functions

M0_INTERNAL void m0_sm_init (struct m0_sm *mach, const struct m0_sm_conf *conf, uint32_t state, struct m0_sm_group *grp)
 
M0_INTERNAL void m0_sm_fini (struct m0_sm *mach)
 
M0_INTERNAL void m0_sm_group_init (struct m0_sm_group *grp)
 
M0_INTERNAL void m0_sm_group_fini (struct m0_sm_group *grp)
 
M0_INTERNAL void m0_sm_group_lock (struct m0_sm_group *grp)
 
M0_INTERNAL void m0_sm_group_unlock (struct m0_sm_group *grp)
 
M0_INTERNAL bool m0_sm_group_is_locked (const struct m0_sm_group *grp)
 
M0_INTERNAL void m0_sm_group_lock_rec (struct m0_sm_group *grp, bool runast)
 
M0_INTERNAL void m0_sm_group_unlock_rec (struct m0_sm_group *grp, bool runast)
 
M0_INTERNAL int m0_sm_timedwait (struct m0_sm *mach, uint64_t states, m0_time_t deadline)
 
M0_INTERNAL void m0_sm_fail (struct m0_sm *mach, int fail_state, int32_t rc)
 
M0_INTERNAL void m0_sm_move (struct m0_sm *mach, int32_t rc, int state)
 
void m0_sm_state_set (struct m0_sm *mach, int state)
 
M0_INTERNAL const char * m0_sm_state_name (const struct m0_sm *mach, int state)
 
M0_INTERNAL const char * m0_sm_conf_state_name (const struct m0_sm_conf *conf, int state)
 
M0_INTERNAL void m0_sm_timer_init (struct m0_sm_timer *timer)
 
M0_INTERNAL void m0_sm_timer_fini (struct m0_sm_timer *timer)
 
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)
 
M0_INTERNAL void m0_sm_timer_cancel (struct m0_sm_timer *timer)
 
M0_INTERNAL bool m0_sm_timer_is_armed (const struct m0_sm_timer *timer)
 
M0_INTERNAL void m0_sm_timeout_init (struct m0_sm_timeout *to)
 
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_timeout_fini (struct m0_sm_timeout *to)
 
M0_INTERNAL bool m0_sm_timeout_is_armed (const struct m0_sm_timeout *to)
 
M0_INTERNAL void m0_sm_ast_post (struct m0_sm_group *grp, struct m0_sm_ast *ast)
 
M0_INTERNAL void m0_sm_ast_cancel (struct m0_sm_group *grp, struct m0_sm_ast *ast)
 
M0_INTERNAL void m0_sm_asts_run (struct m0_sm_group *grp)
 
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)
 
M0_INTERNAL bool m0_sm_invariant (const struct m0_sm *mach)
 
M0_INTERNAL void m0_sm_conf_init (struct m0_sm_conf *conf)
 
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)
 
int m0_sm_group_call (struct m0_sm_group *group, int(*cb)(void *), void *data)
 
M0_INTERNAL int m0_sm_addb2_init (struct m0_sm_conf *conf, uint64_t id, uint64_t counter)
 
M0_INTERNAL void m0_sm_addb2_fini (struct m0_sm_conf *conf)
 
M0_INTERNAL bool m0_sm_addb2_counter_init (struct m0_sm *sm)
 
M0_INTERNAL void m0_sm_ast_wait_init (struct m0_sm_ast_wait *wait, struct m0_mutex *ch_guard)
 
M0_INTERNAL void m0_sm_ast_wait_fini (struct m0_sm_ast_wait *wait)
 
M0_INTERNAL void m0_sm_ast_wait (struct m0_sm_ast_wait *wait)
 
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_ast_wait_signal (struct m0_sm_ast_wait *wait)
 
M0_INTERNAL void m0_sm_ast_wait_prepare (struct m0_sm_ast_wait *wait, struct m0_clink *clink)
 
M0_INTERNAL void m0_sm_ast_wait_complete (struct m0_sm_ast_wait *wait, struct m0_clink *clink)
 
M0_INTERNAL void m0_sm_ast_wait_loop (struct m0_sm_ast_wait *wait, struct m0_clink *clink)
 
M0_INTERNAL void m0_sm_conf_print (const struct m0_sm_conf *conf)
 
M0_INTERNAL uint64_t m0_sm_id_get (const struct m0_sm *sm)
 

Macro Definition Documentation

◆ __MOTR_SM_SM_H__

#define __MOTR_SM_SM_H__

Definition at line 26 of file sm.h.