summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorSander Vrijders <[email protected]>2016-09-06 09:57:24 +0200
committerSander Vrijders <[email protected]>2016-09-06 09:57:24 +0200
commitb85658366b18db60db684ed5ef218052177038d7 (patch)
treed15cb04d68a063fc3418d0259c9e779514861fcf /include
parentd35685c537e7809d5c4a213fcfa553d8a522bc51 (diff)
parent116cda0ae03bc4e7b8571cf1658775c13c03c68e (diff)
downloadouroboros-b85658366b18db60db684ed5ef218052177038d7.tar.gz
ouroboros-b85658366b18db60db684ed5ef218052177038d7.zip
Merged in dstaesse/ouroboros/be-select (pull request #242)
lib: dev: Provide a set of fds to flow_select
Diffstat (limited to 'include')
-rw-r--r--include/ouroboros/CMakeLists.txt3
-rw-r--r--include/ouroboros/dev.h19
-rw-r--r--include/ouroboros/select.h50
-rw-r--r--include/ouroboros/shm_ap_rbuff.h5
4 files changed, 70 insertions, 7 deletions
diff --git a/include/ouroboros/CMakeLists.txt b/include/ouroboros/CMakeLists.txt
index ae922b89..78a7bb9c 100644
--- a/include/ouroboros/CMakeLists.txt
+++ b/include/ouroboros/CMakeLists.txt
@@ -10,7 +10,8 @@ set(HEADER_FILES
irm.h
irm_config.h
nsm.h
- qos.h)
+ qos.h
+ select.h)
install(FILES ${HEADER_FILES} DESTINATION usr/include/ouroboros)
diff --git a/include/ouroboros/dev.h b/include/ouroboros/dev.h
index d5fb744b..fe5ff4b5 100644
--- a/include/ouroboros/dev.h
+++ b/include/ouroboros/dev.h
@@ -22,7 +22,6 @@
#include <unistd.h>
#include <stdint.h>
-#include <time.h>
#include <ouroboros/qos.h>
#include <ouroboros/flow.h>
@@ -34,10 +33,12 @@
/* These calls should be removed once we write the ouroboros OS. */
int ap_init(char * ap_name);
+
void ap_fini(void);
/* Returns file descriptor (> 0) and client AE name. */
int flow_accept(char ** ae_name);
+
int flow_alloc_resp(int fd, int result);
/*
@@ -47,13 +48,21 @@ int flow_alloc_resp(int fd, int result);
int flow_alloc(char * dst_name,
char * src_ae_name,
struct qos_spec * qos);
+
int flow_alloc_res(int fd);
int flow_dealloc(int fd);
-int flow_cntl(int fd, int cmd, int oflags);
-ssize_t flow_write(int fd, void * buf, size_t count);
-ssize_t flow_read(int fd, void * buf, size_t count);
-int flow_select(const struct timespec * timeout);
+int flow_cntl(int fd,
+ int cmd,
+ int oflags);
+
+ssize_t flow_write(int fd,
+ void * buf,
+ size_t count);
+
+ssize_t flow_read(int fd,
+ void * buf,
+ size_t count);
#endif
diff --git a/include/ouroboros/select.h b/include/ouroboros/select.h
new file mode 100644
index 00000000..9e0b8fec
--- /dev/null
+++ b/include/ouroboros/select.h
@@ -0,0 +1,50 @@
+/*
+ * Ouroboros - Copyright (C) 2016
+ *
+ * A select call for flows
+ *
+ * Dimitri Staessens <[email protected]>
+ * Sander Vrijders <[email protected]>
+ *
+ * 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_SELECT_H
+#define OUROBOROS_SELECT_H
+
+#include <stdbool.h>
+#include <time.h>
+
+struct flow_set;
+
+struct flow_set * flow_set_create();
+
+void flow_set_destroy(struct flow_set * set);
+
+void flow_set_zero(struct flow_set * set);
+
+void flow_set_add(struct flow_set * set,
+ int fd);
+
+void flow_set_del(struct flow_set * set,
+ int fd);
+
+bool flow_set_has(struct flow_set * set,
+ int fd);
+
+int flow_select(struct flow_set * set,
+ const struct timespec * timeout);
+
+#endif /* OUROBOROS_SELECT_H */
diff --git a/include/ouroboros/shm_ap_rbuff.h b/include/ouroboros/shm_ap_rbuff.h
index 594c9260..6b11fd2d 100644
--- a/include/ouroboros/shm_ap_rbuff.h
+++ b/include/ouroboros/shm_ap_rbuff.h
@@ -24,6 +24,7 @@
#ifndef OUROBOROS_SHM_AP_RBUFF_H
#define OUROBOROS_SHM_AP_RBUFF_H
+#include <ouroboros/select.h>
#include <sys/types.h>
#include <sys/time.h>
#include <stdbool.h>
@@ -58,7 +59,8 @@ struct rb_entry * shm_ap_rbuff_read(struct shm_ap_rbuff * rb);
int shm_ap_rbuff_peek_idx(struct shm_ap_rbuff * rb);
-int shm_ap_rbuff_peek_b(struct shm_ap_rbuff * rb,
+int shm_ap_rbuff_peek_b(struct shm_ap_rbuff * rb,
+ bool * set,
const struct timespec * timeout);
ssize_t shm_ap_rbuff_read_port(struct shm_ap_rbuff * rb,
@@ -69,4 +71,5 @@ ssize_t shm_ap_rbuff_read_port_b(struct shm_ap_rbuff * rb,
const struct timespec * timeout);
void shm_ap_rbuff_reset(struct shm_ap_rbuff * rb);
+
#endif /* OUROBOROS_SHM_AP_RBUFF_H */