X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/fac3bbf2b2634f4f15cb33ece3acfa39db1433df..5aa59394dc172b205a0cc80315bc666a254507c0:/lunaix-os/includes/lunaix/ds/fifo.h diff --git a/lunaix-os/includes/lunaix/ds/fifo.h b/lunaix-os/includes/lunaix/ds/fifo.h new file mode 100644 index 0000000..3a21824 --- /dev/null +++ b/lunaix-os/includes/lunaix/ds/fifo.h @@ -0,0 +1,35 @@ +#ifndef __LUNAIX_FIFO_BUF_H +#define __LUNAIX_FIFO_BUF_H + +#include +#include + +#define FIFO_DIRTY 1 + +struct fifo_buf +{ + void* data; + size_t wr_pos; + size_t rd_pos; + size_t size; + size_t free_len; + size_t flags; + mutex_t lock; +}; + +int +fifo_backone(struct fifo_buf* fbuf); + +size_t +fifo_putone(struct fifo_buf* fbuf, uint8_t data); + +void +fifo_init(struct fifo_buf* buf, void* data_buffer, size_t buf_size, int flags); + +size_t +fifo_write(struct fifo_buf* fbuf, void* data, size_t count); + +size_t +fifo_read(struct fifo_buf* fbuf, void* buf, size_t count); + +#endif /* __LUNAIX_FIFO_BUF_H */