jack1 codebase
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
971B

  1. #ifndef _RINGBUFFER_H
  2. #define _RINGBUFFER_H
  3. #include <sys/types.h>
  4. typedef struct
  5. {
  6. char *buf;
  7. size_t len;
  8. }
  9. ringbuffer_data_t ;
  10. typedef struct
  11. {
  12. char *buf;
  13. volatile size_t write_ptr;
  14. volatile size_t read_ptr;
  15. size_t size;
  16. size_t size_mask;
  17. int mlocked;
  18. }
  19. ringbuffer_t ;
  20. ringbuffer_t *ringbuffer_create(int sz);
  21. void ringbuffer_free(ringbuffer_t *rb);
  22. int ringbuffer_mlock(ringbuffer_t *rb);
  23. void ringbuffer_reset(ringbuffer_t *rb);
  24. void ringbuffer_write_advance(ringbuffer_t *rb, size_t cnt);
  25. void ringbuffer_read_advance(ringbuffer_t *rb, size_t cnt);
  26. size_t ringbuffer_write_space(ringbuffer_t *rb);
  27. size_t ringbuffer_read_space(ringbuffer_t *rb);
  28. size_t ringbuffer_read(ringbuffer_t *rb, char *dest, size_t cnt);
  29. size_t ringbuffer_write(ringbuffer_t *rb, char *src, size_t cnt);
  30. void ringbuffer_get_read_vector(ringbuffer_t *rb, ringbuffer_data_t *vec);
  31. void ringbuffer_get_write_vector(ringbuffer_t *rb, ringbuffer_data_t *vec);
  32. #endif