29 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_HA 245 for (; qitem !=
NULL;
276 #undef M0_TRACE_SUBSYSTEM M0_INTERNAL bool m0_ha_lq_has_tag(const struct m0_ha_lq *lq, uint64_t tag)
M0_INTERNAL bool m0_ha_lq_try_unnext(struct m0_ha_lq *lq)
M0_INTERNAL uint64_t m0_ha_lq_enqueue(struct m0_ha_lq *lq, const struct m0_ha_msg *msg)
M0_INTERNAL void m0_ha_lq_fini(struct m0_ha_lq *lq)
static bool ha_lq_tags_invariant(const struct m0_ha_link_tags *tags)
M0_INTERNAL struct m0_ha_msg * m0_ha_lq_next(struct m0_ha_lq *lq)
M0_INTERNAL void m0_ha_lq_tags_set(struct m0_ha_lq *lq, const struct m0_ha_link_tags *tags)
static struct buffer * cur(struct m0_addb2_mach *mach, m0_bcount_t space)
static uint64_t tag(uint8_t code, uint64_t id)
struct m0_ha_lq_cfg hlq_cfg
M0_INTERNAL uint64_t m0_ha_lq_tag_delivered(const struct m0_ha_lq *lq)
struct m0_ha_msg_queue_cfg hlqc_msg_queue_cfg
M0_INTERNAL struct m0_ha_msg_qitem * m0_ha_msg_queue_dequeue(struct m0_ha_msg_queue *mq)
M0_INTERNAL uint64_t m0_ha_lq_dequeue(struct m0_ha_lq *lq)
struct m0_ha_msg_queue hlq_mq
#define container_of(ptr, type, member)
M0_INTERNAL void m0_ha_msg_queue_enqueue(struct m0_ha_msg_queue *mq, struct m0_ha_msg_qitem *qitem)
M0_INTERNAL void m0_ha_lq_tags_get(const struct m0_ha_lq *lq, struct m0_ha_link_tags *tags)
M0_INTERNAL bool m0_ha_lq_has_next(const struct m0_ha_lq *lq)
M0_INTERNAL struct m0_ha_msg_qitem * m0_ha_msg_queue_find(struct m0_ha_msg_queue *mq, uint64_t tag)
M0_INTERNAL bool m0_ha_lq_is_delivered(const struct m0_ha_lq *lq, uint64_t tag)
M0_INTERNAL void m0_ha_msg_queue_fini(struct m0_ha_msg_queue *mq)
M0_INTERNAL void m0_ha_lq_mark_delivered(struct m0_ha_lq *lq, uint64_t tag)
M0_INTERNAL void m0_ha_msg_queue_free(struct m0_ha_msg_queue *mq, struct m0_ha_msg_qitem *qitem)
M0_INTERNAL uint64_t m0_ha_lq_tag_confirmed(const struct m0_ha_lq *lq)
M0_INTERNAL struct m0_ha_msg * m0_ha_lq_msg_prev(struct m0_ha_lq *lq, const struct m0_ha_msg *cur)
M0_INTERNAL bool m0_ha_lq_invariant(const struct m0_ha_lq *lq)
M0_INTERNAL struct m0_ha_msg_qitem * m0_ha_msg_queue_alloc(struct m0_ha_msg_queue *mq)
M0_INTERNAL uint64_t m0_ha_msg_tag(const struct m0_ha_msg *msg)
M0_INTERNAL void m0_ha_lq_init(struct m0_ha_lq *lq, const struct m0_ha_lq_cfg *lq_cfg)
M0_INTERNAL uint64_t m0_ha_lq_tag_assign(const struct m0_ha_lq *lq)
struct m0_ha_link_tags hlq_tags
M0_INTERNAL struct m0_ha_msg_qitem * m0_ha_msg_queue_next(struct m0_ha_msg_queue *mq, const struct m0_ha_msg_qitem *cur)
M0_INTERNAL struct m0_ha_msg_qitem * m0_ha_msg_queue_prev(struct m0_ha_msg_queue *mq, const struct m0_ha_msg_qitem *cur)
M0_INTERNAL struct m0_ha_msg * m0_ha_lq_msg_next(struct m0_ha_lq *lq, const struct m0_ha_msg *cur)
M0_INTERNAL struct m0_ha_msg * m0_ha_lq_msg(struct m0_ha_lq *lq, uint64_t tag)
enum m0_ha_msg_qitem_delivery_state hmq_delivery_state
#define M0_ASSERT_INFO(cond, fmt,...)
M0_INTERNAL uint64_t m0_ha_lq_tag_next(const struct m0_ha_lq *lq)
M0_INTERNAL void m0_ha_msg_queue_init(struct m0_ha_msg_queue *mq, struct m0_ha_msg_queue_cfg *cfg)
#define M0_IMPOSSIBLE(fmt,...)