buffer.h 734 B

12345678910111213141516171819202122232425262728293031
  1. #pragma once
  2. #include "stdint.h"
  3. #define MAKE_RING_BUFFER(BUF_PTR, SIZE) \
  4. { \
  5. .buf_start_pos = (BUF_PTR), \
  6. .buf_end_pos = ((BUF_PTR) + (SIZE)-1), \
  7. .base = (BUF_PTR), \
  8. .head = (BUF_PTR), \
  9. .count = 0, \
  10. }
  11. struct ring_buffer {
  12. char* const buf_start_pos;
  13. char* const buf_end_pos;
  14. char* base;
  15. char* head;
  16. size_t count;
  17. };
  18. int32_t
  19. ring_buffer_empty(struct ring_buffer* buf);
  20. int32_t
  21. ring_buffer_full(struct ring_buffer* buf);
  22. char ring_buffer_read(struct ring_buffer* buf);
  23. int32_t
  24. ring_buffer_write(struct ring_buffer* buf, char c);