Motr  M0
queue.c File Reference
#include "lib/trace.h"
#include "be/queue.h"
#include "lib/errno.h"
#include "lib/memory.h"
#include "lib/buf.h"
#include "lib/misc.h"
#include "be/op.h"
Include dependency graph for queue.c:

Go to the source code of this file.

Data Structures

struct  be_queue_item
 
struct  be_queue_wait_op
 

Macros

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_BE
 
#define BE_QUEUE_ITEM2BUF(bq, bqi)   M0_BUF_INIT((bq)->bq_cfg.bqc_item_length, &(bqi)->bqi_data)
 

Functions

 M0_TL_DESCR_DEFINE (bqq, "m0_be_queue::bq_q*[]", static, struct be_queue_item, bqi_link, bqi_magic, M0_BE_QUEUE_Q_MAGIC, M0_BE_QUEUE_Q_HEAD_MAGIC)
 
 M0_TL_DEFINE (bqq, static, struct be_queue_item)
 
 M0_TL_DESCR_DEFINE (bqop, "m0_be_queue::bq_op_*[]", static, struct be_queue_wait_op, bbo_link, bbo_magic, M0_BE_QUEUE_OP_MAGIC, M0_BE_QUEUE_OP_HEAD_MAGIC)
 
 M0_TL_DEFINE (bqop, static, struct be_queue_wait_op)
 
static uint64_t bq_queue_items_max (struct m0_be_queue *bq)
 
static struct be_queue_itembe_queue_qitem (struct m0_be_queue *bq, uint64_t index)
 
static bool be_queue_invariant (struct m0_be_queue *bq)
 
M0_INTERNAL int m0_be_queue_init (struct m0_be_queue *bq, struct m0_be_queue_cfg *cfg)
 
M0_INTERNAL void m0_be_queue_fini (struct m0_be_queue *bq)
 
M0_INTERNAL void m0_be_queue_lock (struct m0_be_queue *bq)
 
M0_INTERNAL void m0_be_queue_unlock (struct m0_be_queue *bq)
 
static uint64_t be_queue_items_nr (struct m0_be_queue *bq)
 
static bool be_queue_is_empty (struct m0_be_queue *bq)
 
static bool be_queue_is_full (struct m0_be_queue *bq)
 
static struct be_queue_itembe_queue_q_put (struct m0_be_queue *bq, const struct m0_buf *data)
 
static void be_queue_q_peek (struct m0_be_queue *bq, struct m0_buf *data)
 
static void be_queue_q_get (struct m0_be_queue *bq, struct m0_buf *data, bool *successful)
 
static void be_queue_op_put (struct m0_be_queue *bq, struct m0_be_op *op, struct be_queue_item *bqi)
 
static void be_queue_op_put_done (struct m0_be_queue *bq)
 
static bool be_queue_op_put_is_waiting (struct m0_be_queue *bq)
 
static void be_queue_op_get (struct m0_be_queue *bq, struct m0_be_op *op, struct m0_buf *data, bool *successful)
 
static void be_queue_op_get_done (struct m0_be_queue *bq, bool success)
 
static bool be_queue_op_get_is_waiting (struct m0_be_queue *bq)
 
M0_INTERNAL void m0_be_queue_put (struct m0_be_queue *bq, struct m0_be_op *op, const struct m0_buf *data)
 
M0_INTERNAL void m0_be_queue_end (struct m0_be_queue *bq)
 
M0_INTERNAL void m0_be_queue_get (struct m0_be_queue *bq, struct m0_be_op *op, struct m0_buf *data, bool *successful)
 
M0_INTERNAL bool m0_be_queue_peek (struct m0_be_queue *bq, struct m0_buf *data)