diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/ouroboros/CMakeLists.txt | 3 | ||||
| -rw-r--r-- | include/ouroboros/dev.h | 19 | ||||
| -rw-r--r-- | include/ouroboros/select.h | 50 | ||||
| -rw-r--r-- | include/ouroboros/shm_ap_rbuff.h | 5 | 
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 <dimitri.staessens@intec.ugent.be> + *    Sander Vrijders   <sander.vrijders@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_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 */ | 
