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

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.
68 lines
1.9 KiB
C
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);
|
|
|
|
/** @} */
|