refactor: synchronize the vfs objects
[lunaix-os.git] / lunaix-os / includes / lunaix / ds / fifo.h
1 #ifndef __LUNAIX_FIFO_BUF_H
2 #define __LUNAIX_FIFO_BUF_H
3
4 #include <lunaix/ds/mutex.h>
5 #include <lunaix/types.h>
6
7 #define FIFO_DIRTY 1
8
9 struct fifo_buf
10 {
11     void* data;
12     size_t wr_pos;
13     size_t rd_pos;
14     size_t size;
15     size_t free_len;
16     size_t flags;
17     mutex_t lock;
18 };
19
20 int
21 fifo_backone(struct fifo_buf* fbuf);
22
23 size_t
24 fifo_putone(struct fifo_buf* fbuf, uint8_t data);
25
26 void
27 fifo_init(struct fifo_buf* buf, void* data_buffer, size_t buf_size, int flags);
28
29 size_t
30 fifo_write(struct fifo_buf* fbuf, void* data, size_t count);
31
32 size_t
33 fifo_read(struct fifo_buf* fbuf, void* buf, size_t count);
34
35 #endif /* __LUNAIX_FIFO_BUF_H */