lib_ringbuf.h 824 B

1234567891011121314151617181920212223242526
  1. #ifndef LIB_RINGBUF_H
  2. #define LIB_RINGBUF_H
  3. #include <stdint.h>
  4. typedef struct
  5. {
  6. unsigned char *pHead;//环形存储区的首地址
  7. unsigned char *pTail;//环形存储区的结尾地址
  8. unsigned char *pValid;//已使用的缓冲区的首地址
  9. unsigned char *pValidTail;//已使用的缓冲区的尾地址
  10. unsigned int pop_size;
  11. unsigned int push_size;
  12. unsigned int size;
  13. } RingBufOBJ;
  14. typedef RingBufOBJ* RingBuf;
  15. RingBuf RingBuf_Init(RingBufOBJ *data, void *buffer, int buff_size);
  16. void RingBuf_Fini(RingBufOBJ *data);
  17. int RingBuf_Push(RingBuf Object, const void *data, int size);
  18. int RingBuf_Peek(RingBuf Object, void *data, int size); //返回实际尺寸
  19. int RingBuf_Pop(RingBuf Object, void *data, int size);
  20. uint32_t RingBuf_obj_num(RingBuf Object,int obj_size);
  21. #endif