1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-09 00:00:00 +01:00

memory: use default value for memory type

This commit is contained in:
Steffen Vogel 2019-10-26 13:34:03 +02:00
parent 4a21758081
commit 995e4b5ec9
16 changed files with 25 additions and 26 deletions

View file

@ -54,6 +54,7 @@ struct memory_type {
extern struct memory_type memory_heap;
extern struct memory_type memory_hugepage;
extern struct memory_type *memory_default;
struct memory_type * memory_ib(struct node *n, struct memory_type *parent);
struct memory_type * memory_managed(void *ptr, size_t len);

View file

@ -193,7 +193,7 @@ struct node_type * node_type(struct node *n)
return n->_vt;
}
struct memory_type * node_memory_type(struct node *n, struct memory_type *parent);
struct memory_type * node_memory_type(struct node *n);
bool node_is_valid_name(const char *name);

View file

@ -57,7 +57,7 @@ struct pool {
* @retval 0 The pool has been successfully initialized.
* @retval <>0 There was an error during the pool initialization.
*/
int pool_init(struct pool *p, size_t cnt, size_t blocksz, struct memory_type *mem);
int pool_init(struct pool *p, size_t cnt, size_t blocksz, struct memory_type *mem = memory_default);
/** Destroy and release memory used by pool. */
int pool_destroy(struct pool *p);

View file

@ -41,9 +41,7 @@
#include <villas/common.h>
#include <villas/config.h>
/* Forward declarations */
struct memory_type;
#include <villas/memory_type.h>
typedef char cacheline_pad_t[CACHELINE_SIZE];
@ -73,7 +71,7 @@ struct queue {
};
/** Initialize MPMC queue */
int queue_init(struct queue *q, size_t size, struct memory_type *mem);
int queue_init(struct queue *q, size_t size, struct memory_type *mem = memory_default);
/** Desroy MPMC queue and release memory */
int queue_destroy(struct queue *q);

View file

@ -64,7 +64,7 @@ struct queue_signalled {
#define queue_signalled_available(q) queue_available(&((q)->queue))
int queue_signalled_init(struct queue_signalled *qs, size_t size, struct memory_type *mem, enum QueueSignalledMode mode = QueueSignalledMode::AUTO, int flags = 0);
int queue_signalled_init(struct queue_signalled *qs, size_t size, struct memory_type *mem = memory_default, enum QueueSignalledMode mode = QueueSignalledMode::AUTO, int flags = 0);
int queue_signalled_destroy(struct queue_signalled *qs);

View file

@ -542,9 +542,9 @@ int node_netem_fds(struct node *n, int fds[])
return node_type(n)->netem_fds ? node_type(n)->netem_fds(n, fds) : -1;
}
struct memory_type * node_memory_type(struct node *n, struct memory_type *parent)
struct memory_type * node_memory_type(struct node *n)
{
return node_type(n)->memory_type ? node_type(n)->memory_type(n, parent) : &memory_hugepage;
return node_type(n)->memory_type ? node_type(n)->memory_type(n, memory_default) : memory_default;
}
int node_list_parse(struct vlist *list, json_t *cfg, struct vlist *all)

View file

@ -328,11 +328,11 @@ int iec61850_sv_start(struct node *n)
SVReceiver_addSubscriber(i->in.receiver, i->in.subscriber);
/* Initialize pool and queue to pass samples between threads */
ret = pool_init(&i->in.pool, 1024, SAMPLE_LENGTH(vlist_length(&n->in.signals)), &memory_hugepage);
ret = pool_init(&i->in.pool, 1024, SAMPLE_LENGTH(vlist_length(&n->in.signals)));
if (ret)
return ret;
ret = queue_signalled_init(&i->in.queue, 1024, &memory_hugepage);
ret = queue_signalled_init(&i->in.queue, 1024);
if (ret)
return ret;

View file

@ -81,11 +81,11 @@ int loopback_start(struct node *n)
vlist_length(&n->out.signals)
);
ret = pool_init(&l->pool, l->queuelen, SAMPLE_LENGTH(len), &memory_hugepage);
ret = pool_init(&l->pool, l->queuelen, SAMPLE_LENGTH(len));
if (ret)
return ret;
return queue_signalled_init(&l->queue, l->queuelen, &memory_hugepage, l->mode);
return queue_signalled_init(&l->queue, l->queuelen, memory_default, l->mode);
}
int loopback_stop(struct node *n)

View file

@ -361,11 +361,11 @@ int mqtt_start(struct node *n)
if (ret)
return ret;
ret = pool_init(&m->pool, 1024, SAMPLE_LENGTH(vlist_length(&n->in.signals)), &memory_hugepage);
ret = pool_init(&m->pool, 1024, SAMPLE_LENGTH(vlist_length(&n->in.signals)));
if (ret)
return ret;
ret = queue_signalled_init(&m->queue, 1024, &memory_hugepage);
ret = queue_signalled_init(&m->queue, 1024);
if (ret)
return ret;

View file

@ -86,7 +86,7 @@ static int websocket_connection_init(struct websocket_connection *c)
c->_name = nullptr;
ret = queue_init(&c->queue, DEFAULT_QUEUE_LENGTH, &memory_hugepage);
ret = queue_init(&c->queue, DEFAULT_QUEUE_LENGTH);
if (ret)
return ret;
@ -391,11 +391,11 @@ int websocket_start(struct node *n)
int ret;
struct websocket *w = (struct websocket *) n->_vd;
ret = pool_init(&w->pool, DEFAULT_WEBSOCKET_QUEUE_LENGTH, SAMPLE_LENGTH(DEFAULT_WEBSOCKET_SAMPLE_LENGTH), &memory_hugepage);
ret = pool_init(&w->pool, DEFAULT_WEBSOCKET_QUEUE_LENGTH, SAMPLE_LENGTH(DEFAULT_WEBSOCKET_SAMPLE_LENGTH));
if (ret)
return ret;
ret = queue_signalled_init(&w->queue, DEFAULT_WEBSOCKET_QUEUE_LENGTH, &memory_hugepage);
ret = queue_signalled_init(&w->queue, DEFAULT_WEBSOCKET_QUEUE_LENGTH);
if (ret)
return ret;

View file

@ -226,7 +226,7 @@ int path_prepare(struct path *p)
assert(p->state == State::CHECKED);
/* Initialize destinations */
struct memory_type *pool_mt = &memory_hugepage;
struct memory_type *pool_mt = memory_default;
unsigned pool_size = MAX(1UL, vlist_length(&p->destinations)) * p->queuelen;
for (size_t i = 0; i < vlist_length(&p->destinations); i++) {
@ -236,7 +236,7 @@ int path_prepare(struct path *p)
pool_size = node_type(pd->node)->pool_size;
if (node_type(pd->node)->memory_type)
pool_mt = node_memory_type(pd->node, &memory_hugepage);
pool_mt = node_memory_type(pd->node);
ret = path_destination_init(pd, p->queuelen);
if (ret)

View file

@ -31,7 +31,7 @@ int path_destination_init(struct path_destination *pd, int queuelen)
{
int ret;
ret = queue_init(&pd->queue, queuelen, &memory_hugepage);
ret = queue_init(&pd->queue, queuelen);
if (ret)
return ret;

View file

@ -37,7 +37,7 @@ int path_source_init(struct path_source *ps)
if (ps->node->_vt->pool_size)
pool_size = ps->node->_vt->pool_size;
ret = pool_init(&ps->pool, pool_size, SAMPLE_LENGTH(vlist_length(&ps->node->in.signals)), node_memory_type(ps->node, &memory_hugepage));
ret = pool_init(&ps->pool, pool_size, SAMPLE_LENGTH(vlist_length(&ps->node->in.signals)), node_memory_type(ps->node));
if (ret)
return ret;

View file

@ -201,7 +201,7 @@ check: if (optarg == endptr)
smps = new struct sample*[cnt];
ret = pool_init(&p, 10 * cnt, SAMPLE_LENGTH(DEFAULT_SAMPLE_LENGTH), &memory_hugepage);
ret = pool_init(&p, 10 * cnt, SAMPLE_LENGTH(DEFAULT_SAMPLE_LENGTH));
if (ret)
throw RuntimeError("Failed to initilize memory pool");

View file

@ -81,7 +81,7 @@ public:
unsigned vec = LOG2_CEIL(MAX(node->out.vectorize, node->in.vectorize));
unsigned pool_size = node_type(node)->pool_size ? node_type(node)->pool_size : vec;
int ret = pool_init(&pool, pool_size, SAMPLE_LENGTH(DEFAULT_SAMPLE_LENGTH), node_memory_type(node, &memory_hugepage));
int ret = pool_init(&pool, pool_size, SAMPLE_LENGTH(DEFAULT_SAMPLE_LENGTH), node_memory_type(node));
if (ret < 0)
throw RuntimeError("Failed to allocate memory for pool.");
}

View file

@ -227,7 +227,7 @@ ParameterizedTest(struct param *p, io, lowlevel, .init = init_memory)
struct sample *smps[p->cnt];
struct sample *smpt[p->cnt];
ret = pool_init(&pool, 2 * p->cnt, SAMPLE_LENGTH(NUM_VALUES), &memory_hugepage);
ret = pool_init(&pool, 2 * p->cnt, SAMPLE_LENGTH(NUM_VALUES));
cr_assert_eq(ret, 0);
vlist_init(&signals);
@ -297,7 +297,7 @@ ParameterizedTest(struct param *p, io, highlevel, .init = init_memory)
struct sample *smps[p->cnt];
struct sample *smpt[p->cnt];
ret = pool_init(&pool, 2 * p->cnt, SAMPLE_LENGTH(NUM_VALUES), &memory_hugepage);
ret = pool_init(&pool, 2 * p->cnt, SAMPLE_LENGTH(NUM_VALUES));
cr_assert_eq(ret, 0);
ret = sample_alloc_many(&pool, smps, p->cnt);