summaryrefslogtreecommitdiff
path: root/include/ouroboros/shm_flow_set.h
diff options
context:
space:
mode:
authordimitri staessens <dimitri.staessens@intec.ugent.be>2016-10-19 22:25:46 +0200
committerdimitri staessens <dimitri.staessens@intec.ugent.be>2016-10-21 14:17:51 +0200
commitf516b51169020ea1957010fbd1005d746f01b1d9 (patch)
tree03d19b0dfb6eab68f8ee5a3ecac5300c7bef2f4b /include/ouroboros/shm_flow_set.h
parentc79ab46894053312f80390bf13a52c238a7d4704 (diff)
downloadouroboros-f516b51169020ea1957010fbd1005d746f01b1d9.tar.gz
ouroboros-f516b51169020ea1957010fbd1005d746f01b1d9.zip
lib: Demultiplex the fast path
The fast path will now use an incoming ring buffer per flow per process. This necessitated the development of a new method for the asynchronous io call, which is now based on an event queue system for scalability (fqueue). The ipcpd's and tools have been updated to this API.
Diffstat (limited to 'include/ouroboros/shm_flow_set.h')
-rw-r--r--include/ouroboros/shm_flow_set.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/include/ouroboros/shm_flow_set.h b/include/ouroboros/shm_flow_set.h
new file mode 100644
index 00000000..32db5d36
--- /dev/null
+++ b/include/ouroboros/shm_flow_set.h
@@ -0,0 +1,63 @@
+/*
+ * Ouroboros - Copyright (C) 2016
+ *
+ * Management of flow_sets for fqueue
+ *
+ * Dimitri Staessens <dimitri.staessens@intec.ugent.be>
+ *
+ * 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 2 of the License, or
+ * (at your option) 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, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef OUROBOROS_SHM_FLOW_SET_H
+#define OUROBOROS_SHM_FLOW_SET_H
+
+#include <ouroboros/fqueue.h>
+
+#include <sys/time.h>
+
+struct shm_flow_set;
+
+struct shm_flow_set * shm_flow_set_create();
+
+void shm_flow_set_destroy(struct shm_flow_set * set);
+
+struct shm_flow_set * shm_flow_set_open(pid_t api);
+
+void shm_flow_set_close(struct shm_flow_set * set);
+
+void shm_flow_set_zero(struct shm_flow_set * shm_set,
+ ssize_t idx);
+
+int shm_flow_set_add(struct shm_flow_set * shm_set,
+ ssize_t idx,
+ int port_id);
+
+int shm_flow_set_has(struct shm_flow_set * shm_set,
+ ssize_t idx,
+ int port_id);
+
+void shm_flow_set_del(struct shm_flow_set * shm_set,
+ ssize_t idx,
+ int port_id);
+
+void shm_flow_set_notify(struct shm_flow_set * set,
+ int port_id);
+
+int shm_flow_set_wait(const struct shm_flow_set * shm_set,
+ ssize_t idx,
+ int * fqueue,
+ const struct timespec * timeout);
+
+#endif /* OUROBOROS_SHM_FLOW_SET_H */