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

Initial test and addition of queue síze fix

This commit is contained in:
Umar Farooq 2016-10-27 17:47:13 +02:00
parent edd58f9fd2
commit 8d7e0074ad
2 changed files with 71 additions and 3 deletions

62
etc/gtnet-skt/test5.conf Normal file
View file

@ -0,0 +1,62 @@
# This is an example for a minimal loopback configuration.
#
# All messages will be sent back to the origin using UDP packets.
#
# You can use this configuration in conjunction with the 'send', 'receive' and 'random'
# utilities as shown below (run all three steps in parallel).
#
# 0. Overview:
#
# ./signal --PIPE--> ./pipe --UDP--> ./node --UDP--> ./pipe
#
# 1. Start server:
#
# $ ./node etc/loopback.conf
#
# 2. Send random data to server:
#
# $ ./signal random -r 10 -v 4 | ./pipe etc/loopback.conf node1
#
# 3. Receive data from server:
#
# $ ./pipe etc/loopback.conf node2
#
# Author: Steffen Vogel <stvogel@eonerc.rwth-aachen.de>
# Copyright: 2016, Institute for Automation of Complex Power Systems, EONERC
##
stats = 1;
debug = 10;
nodes = {
node1 = {
type = "socket",
layer = "udp",
local = "134.130.169.31:12002", # Local ip:port, use '*' for random port
remote = "134.130.169.98:12001",
header = "gtnet-skt:fake", # 'gtnet-skt' or 'villas'. If not provided, 'villas' header will be used
vectorize = 1, # Number of samples to fetch per iteration from the socket
netem = {
enabled = false,
delay = 1000000, # In micro seconds!
jitter = 300000,
distribution = "normal"
}
},
node2 = {
type = "socket",
layer = "udp",
local = "192.168.88.128:12004", # Local ip:port, use '*' for random port
remote = "192.168.88.129:12001",
header = "gtnet-skt", # 'gtnet-skt' or 'villas'. If not provided, 'villas' header will be used
vectorize = 1 # Number of samples to fetch per iteration from the socket
}
};
paths = (
{
in = "node1", # Name of the node we listen to (see above)
out = "node1", # And we loop back to the origin
hook = ["print"]
}
);

View file

@ -37,9 +37,15 @@
int queue_init(struct queue *q, size_t size, const struct memtype *mem)
{
/* Queue size must be 2 exponent */
if ((size < 2) || ((size & (size - 1)) != 0))
return -1;
/* If that's not the case, round up the size to next power of 2 */
if ((size < 2) || ((size & (size - 1)) != 0)) {
size_t temp_size = 1;
while(temp_size < size)
temp_size = temp_size << 1;
size = temp_size;
//return -1;
}
q->mem = mem;
q->buffer_mask = size - 1;
q->buffer = memory_alloc(q->mem, sizeof(q->buffer[0]) * size);