diff options
| author | Sander Vrijders <sander.vrijders@intec.ugent.be> | 2016-08-30 14:28:40 +0200 | 
|---|---|---|
| committer | Sander Vrijders <sander.vrijders@intec.ugent.be> | 2016-08-30 14:28:40 +0200 | 
| commit | 52db4952d80a10aae464274acdd7401267818b28 (patch) | |
| tree | 303d3d61717d4d3018b8025a9825ff799da01c08 /include | |
| parent | caeefb4d96331d24b38e845c99d0517913a71671 (diff) | |
| parent | 2cc89f6da424ab503af563e0cc92dda43b8f8432 (diff) | |
| download | ouroboros-52db4952d80a10aae464274acdd7401267818b28.tar.gz ouroboros-52db4952d80a10aae464274acdd7401267818b28.zip | |
Merged in dstaesse/ouroboros/be-refactor-rdrbuff (pull request #229)
lib: Refactor shm_du_map to shm_rdrbuff
Diffstat (limited to 'include')
| -rw-r--r-- | include/ouroboros/config.h.in | 6 | ||||
| -rw-r--r-- | include/ouroboros/shared.h | 3 | ||||
| -rw-r--r-- | include/ouroboros/shm_ap_rbuff.h | 5 | ||||
| -rw-r--r-- | include/ouroboros/shm_du_map.h | 72 | ||||
| -rw-r--r-- | include/ouroboros/shm_rdrbuff.h | 84 | 
5 files changed, 92 insertions, 78 deletions
| diff --git a/include/ouroboros/config.h.in b/include/ouroboros/config.h.in index 3a246235..143ae7c8 100644 --- a/include/ouroboros/config.h.in +++ b/include/ouroboros/config.h.in @@ -36,9 +36,9 @@  #define IPCP_NORMAL_EXEC       "@IPCP_NORMAL_TARGET@"  #define IPCP_LOCAL_EXEC        "@IPCP_LOCAL_TARGET@"  #define AP_MAX_FLOWS           256 -#define SHM_DU_BUFF_BLOCK_SIZE sysconf(_SC_PAGESIZE) -#define SHM_DU_MAP_MULTI_BLOCK -#define SHM_DU_MAP_FILENAME    "/ouroboros.shm" +#define SHM_RDRB_BLOCK_SIZE    sysconf(_SC_PAGESIZE) +#define SHM_RDRB_MULTI_BLOCK +#define SHM_RDRB_PREFIX        "/ouroboros.rdrb."  #define LOCKFILE_NAME          "/ouroboros.lockfile"  #define SHM_BUFFER_SIZE        (1 << 14)  #define DU_BUFF_HEADSPACE      128 diff --git a/include/ouroboros/shared.h b/include/ouroboros/shared.h index 9ee9df21..bfd99eb0 100644 --- a/include/ouroboros/shared.h +++ b/include/ouroboros/shared.h @@ -26,7 +26,8 @@  /* FIXME: To be decided which QoS cubes we support */  enum qos_cube {          QOS_CUBE_BE = 0, -        QOS_CUBE_VIDEO +        QOS_CUBE_VIDEO, +        QOS_MAX  };  enum flow_state { diff --git a/include/ouroboros/shm_ap_rbuff.h b/include/ouroboros/shm_ap_rbuff.h index a1949122..9dad0863 100644 --- a/include/ouroboros/shm_ap_rbuff.h +++ b/include/ouroboros/shm_ap_rbuff.h @@ -42,8 +42,9 @@ void                  shm_ap_rbuff_destroy(struct shm_ap_rbuff * rb);  int                   shm_ap_rbuff_write(struct shm_ap_rbuff * rb,                                           struct rb_entry * e);  struct rb_entry *     shm_ap_rbuff_read(struct shm_ap_rbuff * rb); -int                   shm_ap_rbuff_peek(struct shm_ap_rbuff * rb, -                                        const struct timespec * timeout); +int                   shm_ap_rbuff_peek_idx(struct shm_ap_rbuff * rb); +int                   shm_ap_rbuff_peek_b(struct shm_ap_rbuff * rb, +                                          const struct timespec * timeout);  ssize_t               shm_ap_rbuff_read_port(struct shm_ap_rbuff * rb,                                               int port_id);  ssize_t               shm_ap_rbuff_read_port_b(struct shm_ap_rbuff * rb, diff --git a/include/ouroboros/shm_du_map.h b/include/ouroboros/shm_du_map.h deleted file mode 100644 index 98013fc9..00000000 --- a/include/ouroboros/shm_du_map.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Ouroboros - Copyright (C) 2016 - * - * Shared memory map for data units - * - *    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_SHM_DU_MAP_H -#define OUROBOROS_SHM_DU_MAP_H - -#include <stdint.h> -#include <pthread.h> -#include <sys/types.h> - -struct shm_du_buff; -struct shm_du_map; - -struct shm_du_map * shm_du_map_create(); -struct shm_du_map * shm_du_map_open(); -void                shm_du_map_close(struct shm_du_map * dum); -void                shm_du_map_close_on_exit(struct shm_du_map * dum); -void                shm_du_map_destroy(struct shm_du_map * dum); -void *              shm_du_map_sanitize(void * o); - -/* returns the index of the buffer in the DU map */ -ssize_t   shm_du_map_write(struct shm_du_map * dum, -                           pid_t               dst_api, -                           size_t              headspace, -                           size_t              tailspace, -                           uint8_t *           data, -                           size_t              data_len); -ssize_t   shm_du_map_write_b(struct shm_du_map * dum, -                             pid_t               dst_api, -                             size_t              headspace, -                             size_t              tailspace, -                             uint8_t *           data, -                             size_t              data_len); -int       shm_du_map_read(uint8_t **          dst, -                          struct shm_du_map * dum, -                          ssize_t             idx); -int       shm_du_map_remove(struct shm_du_map  * dum, -                            ssize_t              idx); - -uint8_t * shm_du_buff_head_alloc(struct shm_du_map * dum, -                                 int                 idx, -                                 ssize_t             size); -uint8_t * shm_du_buff_tail_alloc(struct shm_du_map * dum, -                                 int                 idx, -                                 ssize_t             size); -int       shm_du_buff_head_release(struct shm_du_map * dum, -                                   int                 idx, -                                   ssize_t             size); -int       shm_du_buff_tail_release(struct shm_du_map * dum, -                                   int                 idx, -                                   ssize_t             size); -#endif /* OUROBOROS_SHM_DU_MAP_H */ diff --git a/include/ouroboros/shm_rdrbuff.h b/include/ouroboros/shm_rdrbuff.h new file mode 100644 index 00000000..09256c56 --- /dev/null +++ b/include/ouroboros/shm_rdrbuff.h @@ -0,0 +1,84 @@ +/* + * Ouroboros - Copyright (C) 2016 + * + * Random Deletion Ring Buffer for Data Units + * + *    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_SHM_RDRBUFF_H +#define OUROBOROS_SHM_RDRBUFF_H + +#include <ouroboros/shared.h> + +#include <stdint.h> +#include <pthread.h> +#include <sys/types.h> + +struct shm_du_buff; +struct shm_rdrbuff; + +struct shm_rdrbuff * shm_rdrbuff_create(); + +struct shm_rdrbuff * shm_rdrbuff_open(); + +void                 shm_rdrbuff_close(struct shm_rdrbuff * rdrb); + +void                 shm_rdrbuff_destroy(struct shm_rdrbuff * rdrb); + +void *               shm_rdrbuff_sanitize(void * o); + +/* returns the index of the buffer in the DU map */ +ssize_t   shm_rdrbuff_write(struct shm_rdrbuff * rdrb, +                            pid_t                dst_api, +                            size_t               headspace, +                            size_t               tailspace, +                            uint8_t *            data, +                            size_t               data_len); + +ssize_t   shm_rdrbuff_write_b(struct shm_rdrbuff * rdrb, +                              pid_t                dst_api, +                              size_t               headspace, +                              size_t               tailspace, +                              uint8_t *            data, +                              size_t               data_len); + +int       shm_rdrbuff_read(uint8_t **           dst, +                           struct shm_rdrbuff * rdrb, +                           ssize_t              idx); + +int       shm_rdrbuff_remove(struct shm_rdrbuff  * rdrb, +                             ssize_t               idx); + + +uint8_t * shm_du_buff_head_alloc(struct shm_rdrbuff * rdrb, +                                 int                  idx, +                                 ssize_t              size); + +uint8_t * shm_du_buff_tail_alloc(struct shm_rdrbuff * rdrb, +                                 int                  idx, +                                 ssize_t              size); + +int       shm_du_buff_head_release(struct shm_rdrbuff * rdrb, +                                   int                  idx, +                                   ssize_t              size); + +int       shm_du_buff_tail_release(struct shm_rdrbuff * rdrb, +                                   int                  idx, +                                   ssize_t              size); +#endif /* OUROBOROS_SHM_RDRBUFF_H */ | 
