diff options
author | Dimitri Staessens <[email protected]> | 2018-05-14 09:20:44 +0200 |
---|---|---|
committer | Sander Vrijders <[email protected]> | 2018-05-14 11:40:09 +0200 |
commit | 38cfdc212c623a46038f005b0c1604c3fdaf3762 (patch) | |
tree | 57d9c0860f014afc9cb10de022d3e72fe4fa8fbc /include | |
parent | eaf14819c8cdab3c5ae1d678b0a12977f8b2d9e1 (diff) | |
download | ouroboros-38cfdc212c623a46038f005b0c1604c3fdaf3762.tar.gz ouroboros-38cfdc212c623a46038f005b0c1604c3fdaf3762.zip |
lib: Add event types to fqueue
The event type of the current event in the fqueue can now be requested
using the fqueue_type() command. Currently events for packets
(FLOW_PKT), flows (FLOW_UP, FLOW_DOWN) and allocation (FLOW_ALLOC,
FLOW_DEALLOC) are specified. The implementation only tracks FLOW_PKT
at this point.
Signed-off-by: Dimitri Staessens <[email protected]>
Signed-off-by: Sander Vrijders <[email protected]>
Diffstat (limited to 'include')
-rw-r--r-- | include/ouroboros/fqueue.h | 40 | ||||
-rw-r--r-- | include/ouroboros/shm_flow_set.h | 3 |
2 files changed, 27 insertions, 16 deletions
diff --git a/include/ouroboros/fqueue.h b/include/ouroboros/fqueue.h index 1b102669..8a5dc988 100644 --- a/include/ouroboros/fqueue.h +++ b/include/ouroboros/fqueue.h @@ -28,6 +28,14 @@ #include <stdbool.h> #include <time.h> +enum fqtype { + FLOW_PKT = 0, + FLOW_DOWN, + FLOW_UP, + FLOW_ALLOC, + FLOW_DEALLOC +}; + struct flow_set; struct fqueue; @@ -37,30 +45,32 @@ typedef struct fqueue fqueue_t; __BEGIN_DECLS -fset_t * fset_create(void); +fset_t * fset_create(void); + +void fset_destroy(fset_t * set); -void fset_destroy(fset_t * set); +fqueue_t * fqueue_create(void); -fqueue_t * fqueue_create(void); +void fqueue_destroy(struct fqueue * fq); -void fqueue_destroy(struct fqueue * fq); +void fset_zero(fset_t * set); -void fset_zero(fset_t * set); +int fset_add(fset_t * set, + int fd); -int fset_add(fset_t * set, - int fd); +bool fset_has(const fset_t * set, + int fd); -bool fset_has(const fset_t * set, - int fd); +void fset_del(fset_t * set, + int fd); -void fset_del(fset_t * set, - int fd); +int fqueue_next(fqueue_t * fq); -int fqueue_next(fqueue_t * fq); +enum fqtype fqueue_type(fqueue_t * fq); -int fevent(fset_t * set, - fqueue_t * fq, - const struct timespec * timeo); +int fevent(fset_t * set, + fqueue_t * fq, + const struct timespec * timeo); __END_DECLS diff --git a/include/ouroboros/shm_flow_set.h b/include/ouroboros/shm_flow_set.h index 76849137..ebf63af5 100644 --- a/include/ouroboros/shm_flow_set.h +++ b/include/ouroboros/shm_flow_set.h @@ -53,7 +53,8 @@ void shm_flow_set_del(struct shm_flow_set * shm_set, int port_id); void shm_flow_set_notify(struct shm_flow_set * set, - int port_id); + int port_id, + int event); ssize_t shm_flow_set_wait(const struct shm_flow_set * shm_set, size_t idx, |