summaryrefslogtreecommitdiff
path: root/include/ouroboros/shm_rbuff.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_rbuff.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_rbuff.h')
-rw-r--r--include/ouroboros/shm_rbuff.h53
1 files changed, 53 insertions, 0 deletions
diff --git a/include/ouroboros/shm_rbuff.h b/include/ouroboros/shm_rbuff.h
new file mode 100644
index 00000000..03660b88
--- /dev/null
+++ b/include/ouroboros/shm_rbuff.h
@@ -0,0 +1,53 @@
+/*
+ * Ouroboros - Copyright (C) 2016
+ *
+ * Ring buffer for incoming SDUs
+ *
+ * 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_RBUFF_H
+#define OUROBOROS_SHM_RBUFF_H
+
+#include <sys/types.h>
+#include <sys/time.h>
+
+struct shm_rbuff;
+
+struct shm_rbuff * shm_rbuff_create(int port_id);
+
+struct shm_rbuff * shm_rbuff_open(pid_t api, int port_id);
+
+void shm_rbuff_close(struct shm_rbuff * rb);
+
+void shm_rbuff_destroy(struct shm_rbuff * rb);
+
+int shm_rbuff_block(struct shm_rbuff * rb);
+
+void shm_rbuff_unblock(struct shm_rbuff * rb);
+
+int shm_rbuff_write(struct shm_rbuff * rb,
+ ssize_t idx);
+
+ssize_t shm_rbuff_read(struct shm_rbuff * rb);
+
+ssize_t shm_rbuff_read_b(struct shm_rbuff * rb,
+ const struct timespec * timeout);
+
+void shm_rbuff_reset(struct shm_rbuff * rb);
+
+#endif /* OUROBOROS_SHM_RBUFF_H */