2016-02-10 20:11:38 +01:00
# Development
2016-06-08 23:21:42 +02:00
Developement is currently coordinated by Steffen Vogel < stvogel @eonerc .rwth-aachen.de > using [GitHub ](http://github.com/RWTH-ACS/VILLASnode ).
2016-02-10 20:11:38 +01:00
Please feel free to submit pull requests or bug reports.
2016-06-08 23:21:42 +02:00
## Shared library: libvillas
2016-02-26 08:39:05 +01:00
2016-06-08 23:21:42 +02:00
VILLASnode is split into a shared library called libvillas and a couple of executables (`villas-server` , `villas-pipe` , `villas-test` , `villas-signal` ) which are linked agains the library.
2016-02-26 08:39:05 +01:00
2016-02-10 20:11:38 +01:00
## Extensibilty
2016-06-08 23:21:42 +02:00
There are two main places where VILLASnode can easily extended:
2016-02-10 20:11:38 +01:00
#### 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)