Diff for /libelwix/inc/elwix/aring.h between versions 1.4 and 1.4.4.1

version 1.4, 2025/09/30 11:38:28 version 1.4.4.1, 2026/02/10 15:49:08
Line 12  terms: Line 12  terms:
 All of the documentation and software included in the ELWIX and AITNET  All of the documentation and software included in the ELWIX and AITNET
 Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>  Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>
   
Copyright 2004 - 2025Copyright 2004 - 2026
         by Michael Pounov <misho@elwix.org>.  All rights reserved.          by Michael Pounov <misho@elwix.org>.  All rights reserved.
   
 Redistribution and use in source and binary forms, with or without  Redistribution and use in source and binary forms, with or without
Line 55  typedef struct { Line 55  typedef struct {
                         struct iovec    *rb_buffer;                          struct iovec    *rb_buffer;
 } ringbuf_t;  } ringbuf_t;
   
   typedef struct {
           E_ATOMIC_ALIGN  unsigned int    lrb_head;
           E_ATOMIC_ALIGN  unsigned int    lrb_tail;
                           int             lrb_size;
                           unsigned char   *lrb_data;
   } lrbuf_t;
   #define lrb_queued(x, r)        do { \
                                           u_int _h, _t; \
                                           _t = atomic_load_explicit((atomic_int*) &(x)->lrb_tail, memory_order_acquire); \
                                           _h = atomic_load_explicit((atomic_int*) &(x)->lrb_head, memory_order_relaxed); \
                                           (r) = (_h + (x)->lrb_size - _t) % (x)->lrb_size; \
                                   } while (0)
   #define lrb_unused(x, r)        do { \
                                           u_int _r; \
                                           lrb_queued((x), _r); \
                                           (r) = (x)->lrb_size - _r; \
                                   } while (0)
   
   
 /*  /*
  * rbuf_init() - Init ring buffer   * rbuf_init() - Init ring buffer
  *   *
Line 110  int rbuf_enqueue(ringbuf_t *rbuf, void *data, size_t l Line 128  int rbuf_enqueue(ringbuf_t *rbuf, void *data, size_t l
  * return: -1 error, 1 buffer is empty or 0 ok   * return: -1 error, 1 buffer is empty or 0 ok
  */   */
 int rbuf_dequeue(ringbuf_t *rbuf, struct iovec **out);  int rbuf_dequeue(ringbuf_t *rbuf, struct iovec **out);
   
   
   /*
    * lrb_init() - Init linear ring buffer
    *
    * @lrb = Linear ring buffer
    * @size = Size of ring buffer
    * return: -1 error or 0 ok
    */
   int lrb_init(lrbuf_t *lrb, u_int size);
   /*
    * lrb_free() - Free linear ring buffer
    *
    * @lrb = Linear ring buffer
    * return: none
    */
   void lrb_free(lrbuf_t *lrb);
   /*
    * lrb_purge() - Purge all buffer
    *
    * @lrb = Linear ring buffer
    * return: none
    */
   void lrb_purge(lrbuf_t *lrb);
   /*
    * lrb_isempty() - Check buffer is empty
    *
    * @lrb = Linear ring buffer
    * return: -1 error, 0 it isn't empty
    */
   int lrb_isempty(lrbuf_t *lrb);
   /*
    * lrb_isfull() - Check buffer is full
    *
    * @lrb = Linear ring buffer
    * return: -1 error or 0 it isn't full
    */
   int lrb_isfull(lrbuf_t *lrb);
   /*
    * lrb_enqueue() - Enqueue data to buffer
    *
    * @lrb = Linear ring buffer
    * @data = Data
    * @len = Length
    * @lost = Permit to lost data
    * return: -1 error, 1 buffer is full or 0 ok
    */
   int lrb_enqueue(lrbuf_t *lrb, void *data, size_t len, int lost);
   /*
    * lrb_dequeue() - Dequeue data from buffer
    *
    * @lrb = Linear ring buffer
    * @data = Data, if =NULL, just dequeue data
    * @len = Length of data
    * return: -1 error, 0 buffer is empty or >0 stored data bytes
    */
   int lrb_dequeue(lrbuf_t *lrb, void *data, size_t len);
   
   
 #endif  #endif

Removed from v.1.4  
changed lines
  Added in v.1.4.4.1


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>