Motr  M0
addb2.c File Reference
#include "lib/finject.h"
#include "lib/errno.h"
#include "lib/thread.h"
#include "lib/arith.h"
#include "lib/tlist.h"
#include "lib/trace.h"
#include "lib/memory.h"
#include "lib/mutex.h"
#include "lib/locality.h"
#include "fid/fid.h"
#include "module/instance.h"
#include "addb2/addb2.h"
#include "addb2/internal.h"
#include "addb2/consumer.h"
#include "addb2/addb2_xc.h"
#include "addb2/storage.h"
#include "addb2/storage_xc.h"
#include "addb2/identifier.h"
Include dependency graph for addb2.c:

Go to the source code of this file.

Data Structures

struct  buffer
 
struct  tentry
 
struct  m0_addb2_mach
 

Macros

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_ADDB
 
#define DEBUG_OWNERSHIP   (1)
 
#define MACH_DEPTH(mach)   (mach->ma_rec.ar_label_nr)
 

Enumerations

enum  {
  BUFFER_SIZE = 64 * 1024, BUFFER_MIN = 4, BUFFER_MAX = 2 * (FRAME_SIZE_MAX / BUFFER_SIZE + 1), TAG_MASK = 0xff00000000000000ull,
  SENSOR_THRESHOLD = 4 * BUFFER_SIZE / 5
}
 
enum  { PUSH = 0x10, POP = 0xf0, DATA = 0x20, SENSOR = 0x30 }
 

Functions

 M0_BASSERT (BUFFER_SIZE > M0_ADDB2_LABEL_MAX *3 *sizeof(uint64_t))
 
 M0_TL_DESCR_DEFINE (tr, "addb2 traces", M0_INTERNAL, struct m0_addb2_trace_obj, o_linkage, o_magix, M0_ADDB2_TRACE_MAGIC, M0_ADDB2_TRACE_HEAD_MAGIC)
 
 M0_TL_DEFINE (tr, M0_INTERNAL, struct m0_addb2_trace_obj)
 
 M0_TL_DESCR_DEFINE (buf, "addb2 buffers", static, struct buffer, b_linkage, b_magix, M0_ADDB2_BUF_MAGIC, M0_ADDB2_BUF_HEAD_MAGIC)
 
 M0_TL_DEFINE (buf, static, struct buffer)
 
 M0_TL_DESCR_DEFINE (sensor, "addb2 sensors", static, struct m0_addb2_sensor, s_linkage, s_magix, M0_ADDB2_SENSOR_MAGIC, M0_ADDB2_SENSOR_HEAD_MAGIC)
 
 M0_TL_DEFINE (sensor, static, struct m0_addb2_sensor)
 
 M0_TL_DESCR_DEFINE (mach, "addb2 machines", M0_INTERNAL, struct m0_addb2_mach, ma_linkage, ma_magix, M0_ADDB2_MACH_MAGIC, M0_ADDB2_MACH_HEAD_MAGIC)
 
 M0_TL_DEFINE (mach, M0_INTERNAL, struct m0_addb2_mach)
 
static int buffer_alloc (struct m0_addb2_mach *mach)
 
static void buffer_fini (struct buffer *buffer)
 
static m0_bcount_t buffer_space (const struct buffer *buffer)
 
static void buffer_add (struct buffer *buf, uint64_t datum)
 
static struct buffermach_buffer (struct m0_addb2_mach *mach)
 
static struct tentrymach_top (struct m0_addb2_mach *m)
 
static struct buffercur (struct m0_addb2_mach *mach, m0_bcount_t space)
 
static struct m0_addb2_machmach (void)
 
static void mach_put (struct m0_addb2_mach *m)
 
static void mach_idle (struct m0_addb2_mach *m)
 
static void add (struct m0_addb2_mach *mach, uint64_t id, int n, const uint64_t *value)
 
static void pack (struct m0_addb2_mach *mach)
 
static uint64_t tag (uint8_t code, uint64_t id)
 
static void sensor_place (struct m0_addb2_mach *m, struct m0_addb2_sensor *s)
 
static void record_consume (struct m0_addb2_mach *m, uint64_t id, int n, const uint64_t *value)
 
static bool trace_invariant (const struct m0_addb2_trace *tr)
 
void m0_addb2_push (uint64_t id, int n, const uint64_t *value)
 
void m0_addb2_pop (uint64_t id)
 
void m0_addb2_add (uint64_t id, int n, const uint64_t *value)
 
void m0_addb2_sensor_add (struct m0_addb2_sensor *s, uint64_t id, unsigned nr, int idx, const struct m0_addb2_sensor_ops *ops)
 
void m0_addb2_sensor_del (struct m0_addb2_sensor *s)
 
struct m0_addb2_machm0_addb2_mach_init (const struct m0_addb2_mach_ops *ops, void *cookie)
 
void m0_addb2_mach_fini (struct m0_addb2_mach *mach)
 
void m0_addb2_force (m0_time_t delay)
 
static int addb2_force_loc_cb (void *unused)
 
static void addb2_force_loc (struct m0_locality *loc)
 
void m0_addb2_force_all (void)
 
void m0_addb2_mach_stop (struct m0_addb2_mach *mach)
 
void m0_addb2_mach_wait (struct m0_addb2_mach *mach)
 
void * m0_addb2_mach_cookie (const struct m0_addb2_mach *mach)
 
void m0_addb2_trace_done (const struct m0_addb2_trace *ctrace)
 
struct m0_addb2_sourcem0_addb2_mach_source (struct m0_addb2_mach *m)
 
M0_INTERNAL m0_bcount_t m0_addb2_trace_size (const struct m0_addb2_trace *trace)
 
void m0_addb2_cursor_init (struct m0_addb2_cursor *cur, const struct m0_addb2_trace *trace)
 
void m0_addb2_cursor_fini (struct m0_addb2_cursor *cur)
 
int m0_addb2_cursor_next (struct m0_addb2_cursor *cur)
 
M0_INTERNAL struct m0_addb2_modulem0_addb2_module_get (void)
 
int m0_addb2_module_init (void)
 
void m0_addb2_module_fini (void)
 
M0_INTERNAL void m0_addb2__mach_print (const struct m0_addb2_mach *m)
 

Variables

struct m0_addb2_mach *(* m0_addb2__mach )(void) = NULL
 
M0_INTERNAL uint64_t m0_addb2__dummy_payload [1] = {}
 
M0_INTERNAL uint64_t m0_addb2__dummy_payload_size