1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-16 00:00:02 +01:00
VILLASnode/doc/Development.md

1.3 KiB

Development

Developement is currently coordinated by Steffen Vogel stvogel@eonerc.rwth-aachen.de using GitHub. Please feel free to submit pull requests or bug reports.

Shared library: libs2ss

S2SS is split into a shared library called libs2ss and a couple of executables (s2ss-server, s2ss-pipe, s2ss-test, s2ss-signal) which are linked agains the library.

Extensibilty

There are two main places where S2SS can easily extended:

New node-type

REGISTER_NODE_TYPE(struct node_type *vt)

New hook functions

/** The type of a hook defines when a hook will be exectuted. This is used as a bitmask. */
enum hook_type {
	HOOK_PATH_START		= 1 << 0, /**< Called whenever a path is started; before threads are created. */

[...]

	HOOK_ASYNC		= 1 << 6, /**< Called asynchronously with fixed rate (see path::rate). */

	HOOK_PERIODIC		= 1 << 7, /**< Called periodically. Period is set by global 'stats' option in the configuration file. */

	/** @{ Classes of hooks */
	/** Internal hooks are mandatory. */
	HOOK_INTERNAL		= 1 << 16,
	/** All hooks */
	HOOK_ALL		= HOOK_INTERNAL - 1
	/** @} */
};

typedef int (*hook_cb_t)(struct path *p, struct hook *h, int when);

REGISTER_HOOK(char *name, int priority, hook_cb_t cb, enum hook_type when)