46 #define EOQ ((struct m0_queue_link *)8) 55 q->q_head =
q->q_tail =
EOQ;
68 return q->q_head ==
EOQ;
121 q->q_head =
head->ql_next;
122 if (
q->q_head ==
EOQ)
137 q->q_tail->ql_next = ql;
147 if ((
q->q_head ==
EOQ) != (
q->q_tail ==
EOQ))
156 if (
q->q_head !=
EOQ &&
q->q_tail->ql_next !=
EOQ)
static struct m0_semaphore q
M0_INTERNAL bool m0_queue_is_empty(const struct m0_queue *q)
static int head(struct m0_sm *mach)
#define M0_ASSERT_EX(cond)
M0_INTERNAL void m0_queue_link_fini(struct m0_queue_link *ql)
M0_INTERNAL void m0_queue_link_init(struct m0_queue_link *ql)
const struct m0_queue M0_QUEUE_INIT
struct m0_queue_link * ql_next
M0_INTERNAL bool m0_queue_contains(const struct m0_queue *q, const struct m0_queue_link *ql)
M0_INTERNAL struct m0_queue_link * m0_queue_get(struct m0_queue *q)
struct m0_queue_link * q_head
M0_INTERNAL void m0_queue_put(struct m0_queue *q, struct m0_queue_link *ql)
M0_INTERNAL size_t m0_queue_length(const struct m0_queue *q)
M0_INTERNAL void m0_queue_init(struct m0_queue *q)
M0_INTERNAL bool m0_queue_invariant(const struct m0_queue *q)
M0_INTERNAL void m0_queue_fini(struct m0_queue *q)
static int scan(struct scanner *s)
M0_INTERNAL bool m0_queue_link_is_in(const struct m0_queue_link *ql)