Motr  M0
fom.h File Reference
#include "lib/queue.h"
#include "lib/thread.h"
#include "lib/bitmap.h"
#include "lib/mutex.h"
#include "lib/chan.h"
#include "lib/atomic.h"
#include "lib/tlist.h"
#include "lib/locality.h"
#include "dtm/dtm.h"
#include "fol/fol.h"
#include "stob/stob.h"
#include "addb2/counter.h"
#include "addb2/histogram.h"
#include "addb2/sys.h"
Include dependency graph for fom.h:

Go to the source code of this file.

Data Structures

struct  m0_fom_locality
 
struct  m0_fom_domain
 
struct  m0_fom_domain_ops
 
struct  m0_fom_callback
 
struct  m0_fom
 
struct  m0_fom_type
 
struct  m0_fom_type_ops
 
struct  m0_fom_ops
 
struct  m0_fom_timeout
 

Macros

#define __MOTR_FOP_FOM_H__
 
#define FOM_PHASE_DEBUG   (1)
 

Enumerations

enum  m0_fom_state {
  M0_FOS_INIT, M0_FOS_READY, M0_FOS_RUNNING, M0_FOS_WAITING,
  M0_FOS_FINISH
}
 
enum  { M0_FOS_TRANS_NR = 8 }
 
enum  m0_fom_phase { M0_FOM_PHASE_INIT, M0_FOM_PHASE_FINISH, M0_FOM_PHASE_NR }
 
enum  m0_fc_state { M0_FCS_ARMED = 1, M0_FCS_DONE }
 
enum  m0_fom_phase_outcome { M0_FSO_WAIT = 1, M0_FSO_AGAIN, M0_FSO_NR }
 

Functions

M0_INTERNAL bool m0_locality_invariant (const struct m0_fom_locality *loc)
 
M0_INTERNAL void m0_fom_locality_post_stats (struct m0_fom_locality *loc)
 
M0_INTERNAL int m0_fom_domain_init (struct m0_fom_domain **out)
 
M0_INTERNAL void m0_fom_domain_fini (struct m0_fom_domain *dom)
 
M0_INTERNAL bool m0_fom_domain_is_idle (const struct m0_fom_domain *dom)
 
M0_INTERNAL bool m0_fom_domain_is_idle_for (const struct m0_reqh_service *svc)
 
M0_INTERNAL bool m0_fom_domain_invariant (const struct m0_fom_domain *dom)
 
M0_INTERNAL void m0_fom_locality_inc (struct m0_fom *fom)
 
M0_INTERNAL bool m0_fom_locality_dec (struct m0_fom *fom)
 
static struct m0_be_txm0_fom_tx (struct m0_fom *fom)
 
static struct m0_be_tx_creditm0_fom_tx_credit (struct m0_fom *fom)
 
M0_INTERNAL void m0_fom_queue (struct m0_fom *fom)
 
M0_INTERNAL struct m0_reqhm0_fom_reqh (const struct m0_fom *fom)
 
void m0_fom_init (struct m0_fom *fom, const struct m0_fom_type *fom_type, const struct m0_fom_ops *ops, struct m0_fop *fop, struct m0_fop *reply, struct m0_reqh *reqh)
 
void m0_fom_fini (struct m0_fom *fom)
 
M0_INTERNAL bool m0_fom_invariant (const struct m0_fom *fom)
 
M0_INTERNAL void m0_fom_block_enter (struct m0_fom *fom)
 
M0_INTERNAL void m0_fom_block_leave (struct m0_fom *fom)
 
M0_INTERNAL void m0_fom_ready (struct m0_fom *fom)
 
M0_INTERNAL void m0_fom_wakeup (struct m0_fom *fom)
 
M0_INTERNAL void m0_fom_callback_init (struct m0_fom_callback *cb)
 
M0_INTERNAL void m0_fom_callback_arm (struct m0_fom *fom, struct m0_chan *chan, struct m0_fom_callback *cb)
 
M0_INTERNAL bool m0_fom_is_waiting_on (const struct m0_fom *fom)
 
M0_INTERNAL void m0_fom_wait_on (struct m0_fom *fom, struct m0_chan *chan, struct m0_fom_callback *cb)
 
M0_INTERNAL void m0_fom_callback_fini (struct m0_fom_callback *cb)
 
M0_INTERNAL void m0_fom_callback_cancel (struct m0_fom_callback *cb)
 
M0_INTERNAL void m0_fom_timeout_init (struct m0_fom_timeout *to)
 
M0_INTERNAL void m0_fom_timeout_fini (struct m0_fom_timeout *to)
 
M0_INTERNAL int m0_fom_timeout_wait_on (struct m0_fom_timeout *to, struct m0_fom *fom, m0_time_t deadline)
 
M0_INTERNAL int m0_fom_timeout_arm (struct m0_fom_timeout *to, struct m0_fom *fom, void(*cb)(struct m0_fom_callback *), m0_time_t deadline)
 
M0_INTERNAL void m0_fom_timeout_cancel (struct m0_fom_timeout *to)
 
M0_INTERNAL bool m0_fom_group_is_locked (const struct m0_fom *fom)
 
M0_INTERNAL void m0_fom_sm_init (struct m0_fom *fom)
 
void m0_fom_phase_set (struct m0_fom *fom, int phase)
 
void m0_fom_phase_move (struct m0_fom *fom, int32_t rc, int phase)
 
void m0_fom_phase_moveif (struct m0_fom *fom, int32_t rc, int phase0, int phase1)
 
int m0_fom_phase (const struct m0_fom *fom)
 
M0_INTERNAL const char * m0_fom_phase_name (const struct m0_fom *fom, int phase)
 
M0_INTERNAL int m0_fom_rc (const struct m0_fom *fom)
 
M0_INTERNAL bool m0_fom_is_waiting (const struct m0_fom *fom)
 
M0_INTERNAL void m0_fom_type_init (struct m0_fom_type *type, uint64_t id, const struct m0_fom_type_ops *ops, const struct m0_reqh_service_type *svc_type, const struct m0_sm_conf *sm)
 
M0_INTERNAL int m0_fom_addb2_init (struct m0_fom_type *type, uint64_t id)
 
M0_INTERNAL int m0_fom_fol_rec_add (struct m0_fom *fom)
 
M0_INTERNAL void m0_fom_fdmi_record_post (struct m0_fom *fom)
 
M0_INTERNAL struct m0_reqhm0_fom2reqh (const struct m0_fom *fom)
 
M0_INTERNAL int m0_fom_timedwait (struct m0_fom *fom, uint64_t phases, m0_time_t deadline)
 

Macro Definition Documentation

◆ __MOTR_FOP_FOM_H__

#define __MOTR_FOP_FOM_H__

Definition at line 26 of file fom.h.