diff options
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/bitmap.c | 62 | ||||
| -rw-r--r-- | src/lib/cdap.c | 5 | ||||
| -rw-r--r-- | src/lib/dev.c | 28 | ||||
| -rw-r--r-- | src/lib/irm.c | 4 | ||||
| -rw-r--r-- | src/lib/nsm.c | 10 | ||||
| -rw-r--r-- | src/lib/shm_flow_set.c | 45 | ||||
| -rw-r--r-- | src/lib/shm_rbuff.c | 28 | ||||
| -rw-r--r-- | src/lib/shm_rdrbuff.c | 85 | ||||
| -rw-r--r-- | src/lib/sockets.c | 1 | ||||
| -rw-r--r-- | src/lib/tests/bitmap_test.c | 3 | 
10 files changed, 139 insertions, 132 deletions
diff --git a/src/lib/bitmap.c b/src/lib/bitmap.c index e84145b2..94f5654f 100644 --- a/src/lib/bitmap.c +++ b/src/lib/bitmap.c @@ -28,25 +28,25 @@  #include <assert.h>  #include <stdlib.h>  #include <string.h> +#include <limits.h> -#define BITS_PER_BYTE 8 +#define BITS_PER_BYTE CHAR_BIT -#define BITS_PER_LONG (sizeof(long) *  BITS_PER_BYTE) +#define BITS_PER_LONG (sizeof(size_t) *  BITS_PER_BYTE)  #define BIT_WORD(nr) ((nr) / BITS_PER_LONG)  #define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))  #define BITS_TO_LONGS(nr) \ -        DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long)) +        DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(size_t)) -static unsigned long find_next_zero_bit(const unsigned long * addr, -                                        unsigned long nbits) +static size_t find_next_zero_bit(const size_t * addr, size_t nbits)  { -        unsigned long tmp; -        unsigned long start = 0; -        unsigned long pos = 0; -        unsigned long mask; +        size_t tmp; +        size_t start = 0; +        size_t pos = 0; +        size_t mask;          /* First find correct word */          tmp = ~addr[start]; @@ -68,36 +68,33 @@ static unsigned long find_next_zero_bit(const unsigned long * addr,          return (start * BITS_PER_LONG) + pos;  } -static void bitmap_zero(unsigned long * dst, -                        unsigned int nbits) +static void bitmap_zero(size_t * dst, size_t nbits)  { -        unsigned int len = BITS_TO_LONGS(nbits) * sizeof(unsigned long); +        size_t len = BITS_TO_LONGS(nbits) * sizeof(size_t);          memset(dst, 0, len);  } -static void bitmap_clear(unsigned long * map, -                         unsigned int start) +static void bitmap_clear(size_t * map, size_t start)  { -        unsigned long * p = map + BIT_WORD(start); -        unsigned long mask = ~(1UL << (start % (BITS_PER_LONG))); +        size_t * p = map + BIT_WORD(start); +        size_t mask = ~(1UL << (start % (BITS_PER_LONG)));          *p &= mask;  } -static void bitmap_set(unsigned long * map, -                       unsigned int start) +static void bitmap_set(size_t * map, size_t start)  { -        unsigned long * p = map + BIT_WORD(start); -        unsigned long mask = 1UL << (start % (BITS_PER_LONG)); +        size_t * p = map + BIT_WORD(start); +        size_t mask = 1UL << (start % (BITS_PER_LONG));          *p |= mask;  }  struct bmp {          ssize_t offset; -        size_t  size; +        size_t size; -        unsigned long * bitmap; +        size_t * bitmap;  };  struct bmp * bmp_create(size_t bits, ssize_t offset) @@ -111,7 +108,7 @@ struct bmp * bmp_create(size_t bits, ssize_t offset)          if (tmp == NULL)                  return NULL; -        tmp->bitmap = malloc(BITS_TO_LONGS(bits) * sizeof(unsigned long)); +        tmp->bitmap = malloc(BITS_TO_LONGS(bits) * sizeof(size_t));          if (tmp->bitmap == NULL) {                  free(tmp);                  return NULL; @@ -150,14 +147,12 @@ static ssize_t bad_id(struct bmp * b)  ssize_t bmp_allocate(struct bmp * b)  { -        ssize_t id; +        size_t id;          if (b == NULL)                  return -1; -        id = (ssize_t) find_next_zero_bit(b->bitmap, -                                          b->size); - +        id = find_next_zero_bit(b->bitmap, b->size);          if (id >= b->size)                  return bad_id(b); @@ -166,19 +161,17 @@ ssize_t bmp_allocate(struct bmp * b)          return id + b->offset;  } -static bool is_id_valid(struct bmp * b, -                        ssize_t id) +static bool is_id_valid(struct bmp * b, ssize_t id)  {          assert(b); -        if ((id < b->offset) || (id > (b->offset + b->size))) +        if ((id < b->offset) || (id > (ssize_t) (b->offset + b->size)))                  return false;          return true;  } -bool bmp_is_id_valid(struct bmp * b, -                     ssize_t id) +bool bmp_is_id_valid(struct bmp * b, ssize_t id)  {          if (b == NULL)                  return false; @@ -186,10 +179,9 @@ bool bmp_is_id_valid(struct bmp * b,          return is_id_valid(b, id);  } -int bmp_release(struct bmp * b, -                ssize_t id) +int bmp_release(struct bmp * b, ssize_t id)  { -        ssize_t rid; +        size_t rid;          if (b == NULL)                  return -1; diff --git a/src/lib/cdap.c b/src/lib/cdap.c index 92a05221..4a6408f6 100644 --- a/src/lib/cdap.c +++ b/src/lib/cdap.c @@ -56,13 +56,14 @@ static int next_invoke_id(struct cdap * instance)          pthread_mutex_lock(&instance->ids_lock);          ret = bmp_allocate(instance->ids); +        if (!bmp_is_id_valid(instance->ids, ret)) +                ret = -1; /* INVALID_INVOKE_ID */          pthread_mutex_unlock(&instance->ids_lock);          return ret;  } -static int release_invoke_id(struct cdap * instance, -                             int id) +static int release_invoke_id(struct cdap * instance, int id)  {          int ret; diff --git a/src/lib/dev.c b/src/lib/dev.c index 146070b7..86a5913e 100644 --- a/src/lib/dev.c +++ b/src/lib/dev.c @@ -285,7 +285,7 @@ void ap_fini()          for (i = 0; i < AP_MAX_FLOWS; ++i) {                  if (ai.flows[i].tx_rb != NULL) { -                        int idx; +                        ssize_t idx;                          while ((idx = shm_rbuff_read(ai.flows[i].rx_rb)) >= 0)                                  shm_rdrbuff_remove(ai.rdrb, idx);                          shm_rbuff_close(ai.flows[i].rx_rb); @@ -467,6 +467,9 @@ int flow_alloc(char * dst_name, char * src_ae_name, struct qos_spec * qos)          irm_msg_t * recv_msg = NULL;          int fd = -1; +        /*  FIXME: add qos support */ +        (void) qos; +          if (dst_name == NULL)                  return -EINVAL; @@ -755,8 +758,8 @@ ssize_t flow_write(int fd, void * buf, size_t count)  ssize_t flow_read(int fd, void * buf, size_t count)  { -        int idx = -1; -        int n; +        ssize_t idx = -1; +        ssize_t n;          uint8_t * sdu;          if (fd < 0 || fd >= AP_MAX_FLOWS) @@ -794,7 +797,7 @@ ssize_t flow_read(int fd, void * buf, size_t count)                  return -1;          } -        memcpy(buf, sdu, MIN(n, count)); +        memcpy(buf, sdu, MIN((size_t) n, count));          shm_rdrbuff_remove(ai.rdrb, idx); @@ -949,7 +952,7 @@ int flow_event_wait(struct flow_set *       set,                      struct fqueue *         fq,                      const struct timespec * timeout)  { -        int ret; +        ssize_t ret;          if (set == NULL)                  return -EINVAL; @@ -961,9 +964,6 @@ int flow_event_wait(struct flow_set *       set,          if (ret == -ETIMEDOUT)                  return -ETIMEDOUT; -        if (ret < 0) -                return ret; -          fq->fqsize = ret;          fq->next   = 0; @@ -1214,7 +1214,7 @@ int ipcp_flow_alloc_reply(int fd, int response)  int ipcp_flow_read(int fd, struct shm_du_buff ** sdb)  { -        int idx = -1; +        ssize_t idx = -1;          int port_id = -1;          pthread_rwlock_rdlock(&ai.data_lock); @@ -1249,7 +1249,7 @@ int ipcp_flow_read(int fd, struct shm_du_buff ** sdb)  int ipcp_flow_write(int fd, struct shm_du_buff * sdb)  { -        ssize_t idx; +        size_t idx;          if (sdb == NULL)                  return -EINVAL; @@ -1285,7 +1285,7 @@ ssize_t local_flow_read(int fd)          return shm_rbuff_read(ai.flows[fd].rx_rb);  } -int local_flow_write(int fd, ssize_t idx) +int local_flow_write(int fd, size_t idx)  {          if (fd < 0)                  return -EINVAL; @@ -1323,6 +1323,12 @@ int ipcp_read_shim(int fd, struct shm_du_buff ** sdb)          }          idx = shm_rbuff_read(ai.flows[fd].rx_rb); +        if (idx < 0) { +                pthread_rwlock_unlock(&ai.flows_lock); +                pthread_rwlock_unlock(&ai.data_lock); +                return -EAGAIN; +        } +          *sdb = shm_rdrbuff_get(ai.rdrb, idx);          pthread_rwlock_unlock(&ai.flows_lock); diff --git a/src/lib/irm.c b/src/lib/irm.c index c4c6395b..c68aa0f6 100644 --- a/src/lib/irm.c +++ b/src/lib/irm.c @@ -166,8 +166,8 @@ ssize_t irm_list_ipcps(char *   name,  {          irm_msg_t msg = IRM_MSG__INIT;          irm_msg_t * recv_msg = NULL; -        ssize_t nr = -1; -        int i; +        size_t nr = 0; +        size_t i;          if (apis == NULL)                  return -EINVAL; diff --git a/src/lib/nsm.c b/src/lib/nsm.c index 069db139..654b526b 100644 --- a/src/lib/nsm.c +++ b/src/lib/nsm.c @@ -26,6 +26,9 @@ int nsm_reg(char * name,              char ** dafs,              size_t dafs_size)  { +        (void) name; +        (void) dafs; +        (void) dafs_size;          return -1;  } @@ -34,6 +37,10 @@ int nsm_unreg(char * name,                char ** dafs,                size_t dafs_size)  { +        (void) name; +        (void) dafs; +        (void) dafs_size; +          return -1;  } @@ -41,5 +48,8 @@ int nsm_unreg(char * name,  ssize_t nsm_resolve(char * name,                      char ** dafs)  { +        (void) name; +        (void) dafs; +          return -1;  } diff --git a/src/lib/shm_flow_set.c b/src/lib/shm_flow_set.c index 04de9fc5..f68773aa 100644 --- a/src/lib/shm_flow_set.c +++ b/src/lib/shm_flow_set.c @@ -43,7 +43,7 @@  #define FN_MAX_CHARS 255 -#define FQUEUESIZE (SHM_BUFFER_SIZE * sizeof(int)) +#define FQUEUESIZE ((SHM_BUFFER_SIZE) * sizeof(int))  #define SHM_FLOW_SET_FILE_SIZE (IRMD_MAX_FLOWS * sizeof(ssize_t)          \                                  + AP_MAX_FQUEUES * sizeof(size_t)         \ @@ -51,7 +51,7 @@                                  + AP_MAX_FQUEUES * FQUEUESIZE             \                                  + sizeof(pthread_mutex_t)) -#define fqueue_ptr(fs, idx) (fs->fqueues + SHM_BUFFER_SIZE * idx) +#define fqueue_ptr(fs, idx) (fs->fqueues + (SHM_BUFFER_SIZE) * idx)  struct shm_flow_set {          ssize_t *         mtable; @@ -123,7 +123,7 @@ struct shm_flow_set * shm_flow_set_create()          set->conds   = (pthread_cond_t *)(set->heads + AP_MAX_FQUEUES);          set->fqueues = (int *) (set->conds + AP_MAX_FQUEUES);          set->lock    = (pthread_mutex_t *) -                (set->fqueues + AP_MAX_FQUEUES * SHM_BUFFER_SIZE); +                (set->fqueues + AP_MAX_FQUEUES * (SHM_BUFFER_SIZE));          pthread_mutexattr_init(&mattr);  #ifndef __APPLE__ @@ -194,7 +194,7 @@ struct shm_flow_set * shm_flow_set_open(pid_t api)          set->conds   = (pthread_cond_t *)(set->heads + AP_MAX_FQUEUES);          set->fqueues = (int *) (set->conds + AP_MAX_FQUEUES);          set->lock    = (pthread_mutex_t *) -                (set->fqueues + AP_MAX_FQUEUES * SHM_BUFFER_SIZE); +                (set->fqueues + AP_MAX_FQUEUES * (SHM_BUFFER_SIZE));          set->api = api; @@ -249,16 +249,16 @@ void shm_flow_set_close(struct shm_flow_set * set)  }  void shm_flow_set_zero(struct shm_flow_set * shm_set, -                       ssize_t               idx) +                       size_t                idx)  {          ssize_t i = 0; -        assert(!(idx < 0) && idx < AP_MAX_FQUEUES); +        assert(idx < AP_MAX_FQUEUES);          pthread_mutex_lock(shm_set->lock);          for (i = 0; i < IRMD_MAX_FLOWS; ++i) -                if (shm_set->mtable[i] == idx) +                if (shm_set->mtable[i] == (ssize_t) idx)                          shm_set->mtable[i] = -1;          shm_set->heads[idx] = 0; @@ -268,12 +268,12 @@ void shm_flow_set_zero(struct shm_flow_set * shm_set,  int shm_flow_set_add(struct shm_flow_set * shm_set, -                     ssize_t               idx, +                     size_t                idx,                       int                   port_id)  {          assert(shm_set);          assert(!(port_id < 0) && port_id < IRMD_MAX_FLOWS); -        assert(!(idx < 0) && idx < AP_MAX_FQUEUES); +        assert(idx < AP_MAX_FQUEUES);          pthread_mutex_lock(shm_set->lock); @@ -290,34 +290,34 @@ int shm_flow_set_add(struct shm_flow_set * shm_set,  }  void shm_flow_set_del(struct shm_flow_set * shm_set, -                      ssize_t               idx, +                      size_t                idx,                        int                   port_id)  {          assert(shm_set);          assert(!(port_id < 0) && port_id < IRMD_MAX_FLOWS); -        assert(!(idx < 0) && idx < AP_MAX_FQUEUES); +        assert(idx < AP_MAX_FQUEUES);          pthread_mutex_lock(shm_set->lock); -        if (shm_set->mtable[port_id] == idx) +        if (shm_set->mtable[port_id] == (ssize_t) idx)                  shm_set->mtable[port_id] = -1;          pthread_mutex_unlock(shm_set->lock);  }  int shm_flow_set_has(struct shm_flow_set * shm_set, -                     ssize_t               idx, +                     size_t                idx,                       int                   port_id)  {          int ret = 0;          assert(shm_set);          assert(!(port_id < 0) && port_id < IRMD_MAX_FLOWS); -        assert(!(idx < 0) && idx < AP_MAX_FQUEUES); +        assert(idx < AP_MAX_FQUEUES);          pthread_mutex_lock(shm_set->lock); -        if (shm_set->mtable[port_id] == idx) +        if (shm_set->mtable[port_id] == (ssize_t) idx)                  ret = 1;          pthread_mutex_unlock(shm_set->lock); @@ -346,16 +346,16 @@ void shm_flow_set_notify(struct shm_flow_set * shm_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) +ssize_t shm_flow_set_wait(const struct shm_flow_set * shm_set, +                          size_t                      idx, +                          int *                       fqueue, +                          const struct timespec *     timeout)  { -        int ret = 0; +        ssize_t ret = 0;          struct timespec abstime;          assert(shm_set); -        assert(!(idx < 0) && idx < AP_MAX_FQUEUES); +        assert(idx < AP_MAX_FQUEUES);  #ifdef __APPLE__          pthread_mutex_lock(shm_set->lock); @@ -397,11 +397,10 @@ int shm_flow_set_wait(const struct shm_flow_set * shm_set,                  memcpy(fqueue,                         fqueue_ptr(shm_set, idx),                         shm_set->heads[idx] * sizeof(int)); -                ret = shm_set->heads[idx];                  shm_set->heads[idx] = 0;          }          pthread_cleanup_pop(true); -        return ret; +        return 0;  } diff --git a/src/lib/shm_rbuff.c b/src/lib/shm_rbuff.c index a933fbff..8b2e9229 100644 --- a/src/lib/shm_rbuff.c +++ b/src/lib/shm_rbuff.c @@ -44,14 +44,14 @@  #define FN_MAX_CHARS 255 -#define SHM_RBUFF_FILE_SIZE (SHM_BUFFER_SIZE * sizeof(ssize_t)          \ +#define SHM_RBUFF_FILE_SIZE ((SHM_BUFFER_SIZE) * sizeof(ssize_t)          \                               + 2 * sizeof(size_t) + sizeof(int8_t)      \                               + sizeof(pthread_mutex_t)                  \                               + 2 * sizeof (pthread_cond_t)) -#define shm_rbuff_used(rb) ((*rb->head + SHM_BUFFER_SIZE - *rb->tail)   \ -                            & (SHM_BUFFER_SIZE - 1)) -#define shm_rbuff_free(rb) (shm_rbuff_used(rb) + 1 < SHM_BUFFER_SIZE) +#define shm_rbuff_used(rb) ((*rb->head + (SHM_BUFFER_SIZE) - *rb->tail)   \ +                            & ((SHM_BUFFER_SIZE) - 1)) +#define shm_rbuff_free(rb) (shm_rbuff_used(rb) + 1 < (SHM_BUFFER_SIZE))  #define shm_rbuff_empty(rb) (*rb->head == *rb->tail)  #define head_el_ptr(rb) (rb->shm_base + *rb->head)  #define tail_el_ptr(rb) (rb->shm_base + *rb->tail) @@ -122,7 +122,7 @@ struct shm_rbuff * shm_rbuff_create(pid_t api, int port_id)          }          rb->shm_base = shm_base; -        rb->head     = (size_t *) (rb->shm_base + SHM_BUFFER_SIZE); +        rb->head     = (size_t *) (rb->shm_base + (SHM_BUFFER_SIZE));          rb->tail     = rb->head + 1;          rb->acl      = (int8_t *) (rb->tail + 1);          rb->lock     = (pthread_mutex_t *) (rb->acl + 1); @@ -198,7 +198,7 @@ struct shm_rbuff * shm_rbuff_open(pid_t api, int port_id)          }          rb->shm_base = shm_base; -        rb->head     = (size_t *) (rb->shm_base + SHM_BUFFER_SIZE); +        rb->head     = (size_t *) (rb->shm_base + (SHM_BUFFER_SIZE));          rb->tail     = rb->head + 1;          rb->acl      = (int8_t *) (rb->tail + 1);          rb->lock     = (pthread_mutex_t *) (rb->acl + 1); @@ -236,10 +236,10 @@ void shm_rbuff_destroy(struct shm_rbuff * rb)          free(rb);  } -int shm_rbuff_write(struct shm_rbuff * rb, ssize_t idx) +int shm_rbuff_write(struct shm_rbuff * rb, size_t idx)  {          assert(rb); -        assert(idx >= 0); +        assert(idx < SHM_BUFFER_SIZE);  #ifdef __APPLE__          pthread_mutex_lock(rb->lock); @@ -262,8 +262,8 @@ int shm_rbuff_write(struct shm_rbuff * rb, ssize_t idx)          if (shm_rbuff_empty(rb))                  pthread_cond_broadcast(rb->add); -        *head_el_ptr(rb) = idx; -        *rb->head = (*rb->head + 1) & (SHM_BUFFER_SIZE -1); +        *head_el_ptr(rb) = (ssize_t) idx; +        *rb->head = (*rb->head + 1) & ((SHM_BUFFER_SIZE) -1);          pthread_mutex_unlock(rb->lock); @@ -272,7 +272,7 @@ int shm_rbuff_write(struct shm_rbuff * rb, ssize_t idx)  ssize_t shm_rbuff_read(struct shm_rbuff * rb)  { -        int ret = 0; +        ssize_t ret = 0;          assert(rb); @@ -286,11 +286,11 @@ ssize_t shm_rbuff_read(struct shm_rbuff * rb)  #endif          if (shm_rbuff_empty(rb)) {                  pthread_mutex_unlock(rb->lock); -                return -1; +                return -EAGAIN;          }          ret = *tail_el_ptr(rb); -        *rb->tail = (*rb->tail + 1) & (SHM_BUFFER_SIZE -1); +        *rb->tail = (*rb->tail + 1) & ((SHM_BUFFER_SIZE) - 1);          pthread_mutex_unlock(rb->lock); @@ -344,7 +344,7 @@ ssize_t shm_rbuff_read_b(struct shm_rbuff *      rb,          if (idx != -ETIMEDOUT) {                  idx = *tail_el_ptr(rb); -                *rb->tail = (*rb->tail + 1) & (SHM_BUFFER_SIZE -1); +                *rb->tail = (*rb->tail + 1) & ((SHM_BUFFER_SIZE) - 1);                  pthread_cond_broadcast(rb->del);          } diff --git a/src/lib/shm_rdrbuff.c b/src/lib/shm_rdrbuff.c index e5a37577..dc1feb10 100644 --- a/src/lib/shm_rdrbuff.c +++ b/src/lib/shm_rdrbuff.c @@ -41,30 +41,30 @@  #include <ouroboros/logs.h> -#define SHM_BLOCKS_SIZE (SHM_BUFFER_SIZE * SHM_RDRB_BLOCK_SIZE) -#define SHM_FILE_SIZE (SHM_BLOCKS_SIZE + 3 * sizeof (size_t)                   \ +#define SHM_BLOCKS_SIZE ((SHM_BUFFER_SIZE) * SHM_RDRB_BLOCK_SIZE) +#define SHM_FILE_SIZE (SHM_BLOCKS_SIZE + 3 * sizeof(size_t)                    \                         + sizeof(pthread_mutex_t) + 2 * sizeof(pthread_cond_t)  \                         + sizeof(pid_t))  #define get_head_ptr(rdrb)                                                     \ -        ((struct shm_du_buff *)(rdrb->shm_base + (*rdrb->ptr_head *            \ -                                                  SHM_RDRB_BLOCK_SIZE))) +        ((struct shm_du_buff *) (rdrb->shm_base + (*rdrb->ptr_head             \ +                                                   * SHM_RDRB_BLOCK_SIZE)))  #define get_tail_ptr(rdrb)                                                     \ -        ((struct shm_du_buff *)(rdrb->shm_base + (*rdrb->ptr_tail *            \ -                                                  SHM_RDRB_BLOCK_SIZE))) +        ((struct shm_du_buff *) (rdrb->shm_base + (*rdrb->ptr_tail             \ +                                                   * SHM_RDRB_BLOCK_SIZE)))  #define idx_to_du_buff_ptr(rdrb, idx)                                          \ -        ((struct shm_du_buff *)(rdrb->shm_base + (idx * SHM_RDRB_BLOCK_SIZE))) +        ((struct shm_du_buff *) (rdrb->shm_base + idx * SHM_RDRB_BLOCK_SIZE))  #define block_ptr_to_idx(rdrb, sdb)                                            \          (((uint8_t *)sdb - rdrb->shm_base) / SHM_RDRB_BLOCK_SIZE)  #define shm_rdrb_used(rdrb)                                                    \ -        ((*rdrb->ptr_head + SHM_BUFFER_SIZE - *rdrb->ptr_tail)                 \ -         & (SHM_BUFFER_SIZE - 1)) +        ((*rdrb->ptr_head + (SHM_BUFFER_SIZE) - *rdrb->ptr_tail)               \ +         & ((SHM_BUFFER_SIZE) - 1))  #define shm_rdrb_free(rdrb, i)                                                 \ -        (shm_rdrb_used(rdrb) + i < SHM_BUFFER_SIZE) +        (shm_rdrb_used(rdrb) + i < (SHM_BUFFER_SIZE))  #define shm_rdrb_empty(rdrb)                                                   \          (*rdrb->ptr_tail == *rdrb->ptr_head) @@ -99,11 +99,11 @@ static void garbage_collect(struct shm_rdrbuff * rdrb)          while (!shm_rdrb_empty(rdrb) &&                 (sdb = get_tail_ptr(rdrb))->dst_api == -1)                  *rdrb->ptr_tail = (*rdrb->ptr_tail + sdb->blocks) -                        & (SHM_BUFFER_SIZE - 1); +                        & ((SHM_BUFFER_SIZE) - 1);  #else          while (!shm_rdrb_empty(rdrb) && get_tail_ptr(rdrb)->dst_api == -1)                  *rdrb->ptr_tail = -                        (*rdrb->ptr_tail + 1) & (SHM_BUFFER_SIZE - 1); +                        (*rdrb->ptr_tail + 1) & ((SHM_BUFFER_SIZE) - 1);  #endif  } @@ -118,9 +118,9 @@ static void clean_sdus(struct shm_rdrbuff * rdrb, pid_t api)                  if (buf->dst_api == api)                          buf->dst_api = -1;  #ifdef SHM_RDRB_MULTI_BLOCK -                idx = (idx + buf->blocks) & (SHM_BUFFER_SIZE - 1); +                idx = (idx + buf->blocks) & ((SHM_BUFFER_SIZE) - 1);  #else -                idx = (idx + 1) & (SHM_BUFFER_SIZE - 1); +                idx = (idx + 1) & ((SHM_BUFFER_SIZE) - 1);  #endif          } @@ -131,7 +131,7 @@ static void clean_sdus(struct shm_rdrbuff * rdrb, pid_t api)  static char * rdrb_filename(enum qos_cube qos)  { -        int chars = 0; +        size_t chars = 0;          char * str;          int qm = QOS_MAX; @@ -440,10 +440,10 @@ ssize_t shm_rdrbuff_write(struct shm_rdrbuff * rdrb,          struct shm_du_buff * sdb;          size_t               size = headspace + len + tailspace;  #ifdef SHM_RDRB_MULTI_BLOCK -        long                 blocks = 0; -        long                 padblocks = 0; +        size_t               blocks = 0; +        size_t               padblocks = 0;  #endif -        int                  sz = size + sizeof *sdb; +        ssize_t              sz = size + sizeof(*sdb);          uint8_t *            write_pos;          assert(rdrb); @@ -469,10 +469,10 @@ ssize_t shm_rdrbuff_write(struct shm_rdrbuff * rdrb,                  ++blocks;          } -        if (blocks + *rdrb->ptr_head > SHM_BUFFER_SIZE) -                padblocks = SHM_BUFFER_SIZE - *rdrb->ptr_head; +        if (blocks + *rdrb->ptr_head > (SHM_BUFFER_SIZE)) +                padblocks = (SHM_BUFFER_SIZE) - *rdrb->ptr_head; -        if (!shm_rdrb_free(rdrb, (blocks + padblocks))) { +        if (!shm_rdrb_free(rdrb, blocks + padblocks)) {  #else          if (!shm_rdrb_free(rdrb, 1)) {  #endif @@ -508,9 +508,9 @@ ssize_t shm_rdrbuff_write(struct shm_rdrbuff * rdrb,          sdb->idx = *rdrb->ptr_head;  #ifdef SHM_RDRB_MULTI_BLOCK -        *rdrb->ptr_head = (*rdrb->ptr_head + blocks) & (SHM_BUFFER_SIZE - 1); +        *rdrb->ptr_head = (*rdrb->ptr_head + blocks) & ((SHM_BUFFER_SIZE) - 1);  #else -        *rdrb->ptr_head = (*rdrb->ptr_head + 1) & (SHM_BUFFER_SIZE - 1); +        *rdrb->ptr_head = (*rdrb->ptr_head + 1) & ((SHM_BUFFER_SIZE) - 1);  #endif          pthread_mutex_unlock(rdrb->lock); @@ -527,10 +527,10 @@ ssize_t shm_rdrbuff_write_b(struct shm_rdrbuff * rdrb,          struct shm_du_buff * sdb;          size_t               size = headspace + len + tailspace;  #ifdef SHM_RDRB_MULTI_BLOCK -        long                 blocks = 0; -        long                 padblocks = 0; +        size_t               blocks = 0; +        size_t               padblocks = 0;  #endif -        int                  sz = size + sizeof *sdb; +        ssize_t              sz = size + sizeof(*sdb);          uint8_t *            write_pos;          assert(rdrb); @@ -550,7 +550,7 @@ ssize_t shm_rdrbuff_write_b(struct shm_rdrbuff * rdrb,                  pthread_mutex_consistent(rdrb->lock);          }  #endif -        pthread_cleanup_push((void(*)(void *))pthread_mutex_unlock, +        pthread_cleanup_push((void (*) (void *)) pthread_mutex_unlock,                               (void *) rdrb->lock);  #ifdef SHM_RDRB_MULTI_BLOCK @@ -559,8 +559,8 @@ ssize_t shm_rdrbuff_write_b(struct shm_rdrbuff * rdrb,                  ++blocks;          } -        if (blocks + *rdrb->ptr_head > SHM_BUFFER_SIZE) -                padblocks = SHM_BUFFER_SIZE - *rdrb->ptr_head; +        if (blocks + *rdrb->ptr_head > (SHM_BUFFER_SIZE)) +                padblocks = (SHM_BUFFER_SIZE) - *rdrb->ptr_head;          while (!shm_rdrb_free(rdrb, (blocks + padblocks))) {  #else @@ -597,27 +597,26 @@ ssize_t shm_rdrbuff_write_b(struct shm_rdrbuff * rdrb,          sdb->idx = *rdrb->ptr_head;  #ifdef SHM_RDRB_MULTI_BLOCK -        *rdrb->ptr_head = (*rdrb->ptr_head + blocks) & (SHM_BUFFER_SIZE - 1); +        *rdrb->ptr_head = (*rdrb->ptr_head + blocks) & ((SHM_BUFFER_SIZE) - 1);  #else -        *rdrb->ptr_head = (*rdrb->ptr_head + 1) & (SHM_BUFFER_SIZE - 1); +        *rdrb->ptr_head = (*rdrb->ptr_head + 1) & ((SHM_BUFFER_SIZE) - 1);  #endif          pthread_cleanup_pop(true);          return sdb->idx;  } -int shm_rdrbuff_read(uint8_t **           dst, -                     struct shm_rdrbuff * rdrb, -                     ssize_t              idx) +ssize_t shm_rdrbuff_read(uint8_t **           dst, +                         struct shm_rdrbuff * rdrb, +                         size_t               idx)  { -        size_t len = 0; +        ssize_t len = 0;          struct shm_du_buff * sdb;          assert(dst);          assert(rdrb); +        assert(idx < (SHM_BUFFER_SIZE)); -        if (idx > SHM_BUFFER_SIZE) -                return -1;  #ifdef __APPLE__          pthread_mutex_lock(rdrb->lock);  #else @@ -632,7 +631,7 @@ int shm_rdrbuff_read(uint8_t **           dst,          }          sdb = idx_to_du_buff_ptr(rdrb, idx); -        len = sdb->du_tail - sdb->du_head; +        len = (ssize_t) (sdb->du_tail - sdb->du_head);          *dst = ((uint8_t *) (sdb + 1)) + sdb->du_head;          pthread_mutex_unlock(rdrb->lock); @@ -640,14 +639,13 @@ int shm_rdrbuff_read(uint8_t **           dst,          return len;  } -struct shm_du_buff * shm_rdrbuff_get(struct shm_rdrbuff * rdrb, ssize_t idx) +struct shm_du_buff * shm_rdrbuff_get(struct shm_rdrbuff * rdrb, size_t idx)  {          struct shm_du_buff * sdb;          assert(rdrb); +        assert(idx < (SHM_BUFFER_SIZE)); -        if (idx > SHM_BUFFER_SIZE) -                return NULL;  #ifdef __APPLE__          pthread_mutex_lock(rdrb->lock);  #else @@ -668,12 +666,11 @@ struct shm_du_buff * shm_rdrbuff_get(struct shm_rdrbuff * rdrb, ssize_t idx)          return sdb;  } -int shm_rdrbuff_remove(struct shm_rdrbuff * rdrb, ssize_t idx) +int shm_rdrbuff_remove(struct shm_rdrbuff * rdrb, size_t idx)  {          assert(rdrb); +        assert(idx < (SHM_BUFFER_SIZE)); -        if (idx > SHM_BUFFER_SIZE) -                return -1;  #ifdef __APPLE__          pthread_mutex_lock(rdrb->lock);  #else diff --git a/src/lib/sockets.c b/src/lib/sockets.c index c8375c22..db1f3f6b 100644 --- a/src/lib/sockets.c +++ b/src/lib/sockets.c @@ -144,7 +144,6 @@ static irm_msg_t * send_recv_irm_msg_timed(irm_msg_t * msg, bool timed)          if (write(sockfd, buf.data, buf.len) != -1)                  count = read(sockfd, buf.data, IRM_MSG_BUF_SIZE); -          if (count > 0)                  recv_msg = irm_msg__unpack(NULL, count, buf.data); diff --git a/src/lib/tests/bitmap_test.c b/src/lib/tests/bitmap_test.c index 4d2d0c73..7eb72fe7 100644 --- a/src/lib/tests/bitmap_test.c +++ b/src/lib/tests/bitmap_test.c @@ -35,6 +35,9 @@ int bitmap_test(int argc, char ** argv)          ssize_t r;          ssize_t offset = 100; +        (void) argc; +        (void) argv; +          srand(time(NULL));          bmp = bmp_create(bits, offset);  | 
