1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-23 00:00:01 +01:00
VILLASnode/include/villas/nodes/shmem.h
Georg Reinke 2ba3c1cbe7 rework shmem interface to be "symmetric"
The notion of "VILLASnode" / "external program" is removed from the
interface. Now there's only a distiction regarding which process opened
the object first, and this is handled transparently by the functions.

This enables some new uses for the interface, for example connecting
two instances of VILLASnode or two instances of DPsim directly.
2017-06-08 12:43:24 +02:00

68 lines
1.9 KiB
C

/** Node-type for shared memory communication.
*
* @file
* @author Georg Martin Reinke <georg.reinke@rwth-aachen.de>
* @copyright 2017, Institute for Automation of Complex Power Systems, EONERC
* @license GNU General Public License (version 3)
*
* VILLASnode
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*********************************************************************************/
/**
* @ingroup node
* @addtogroup shmem_node Shared memory node type
* @{
*/
#pragma once
#include "node.h"
#include "memory.h"
#include "pool.h"
#include "queue.h"
#include "config.h"
#include "shmem.h"
/** Node-type for shared memory communication.
* @see node_type
*/
struct shmem {
const char* name; /**< Name of the shm object. */
struct shmem_conf conf; /**< Interface configuration struct. */
char **exec; /**< External program to execute on start. */
struct shmem_int intf; /**< Shmem interface */
};
/** @see node_type::print */
char * shmem_print(struct node *n);
/** @see node_type::parse */
int shmem_parse(struct node *n, config_setting_t *cfg);
/** @see node_type::open */
int shmem_open(struct node *n);
/** @see node_type::close */
int shmem_close(struct node *n);
/** @see node_type::read */
int shmem_read(struct node *n, struct sample *smps[], unsigned cnt);
/** @see node_type::write */
int shmem_write(struct node *n, struct sample *smps[], unsigned cnt);
/** @} */