libc: io: implement file io buffering and internal locking for concurrency
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
#ifndef _LIBC_IO_RINGBUF_H_
|
||||
#define _LIBC_IO_RINGBUF_H_
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
enum ringbuf_flags {
|
||||
RINGBUF_NONE = 0,
|
||||
RINGBUF_STATIC,
|
||||
};
|
||||
|
||||
struct ringbuf {
|
||||
enum ringbuf_flags buf_flags;
|
||||
char *buf_ptr;
|
||||
size_t buf_max;
|
||||
|
||||
size_t buf_readp, buf_writep;
|
||||
};
|
||||
|
||||
extern int __libc_ringbuf_get_read_buffer(
|
||||
struct ringbuf *buf,
|
||||
const char **out_bufp,
|
||||
size_t *out_len);
|
||||
extern void __libc_ringbuf_put_read_buffer(
|
||||
struct ringbuf *buf,
|
||||
const char **bufp,
|
||||
size_t *len);
|
||||
|
||||
extern int __libc_ringbuf_get_write_buffer(
|
||||
struct ringbuf *buf,
|
||||
char **out_bufp,
|
||||
size_t *out_len);
|
||||
extern void __libc_ringbuf_put_write_buffer(
|
||||
struct ringbuf *buf,
|
||||
char **bufp,
|
||||
size_t *len);
|
||||
|
||||
extern long __libc_ringbuf_read(struct ringbuf *buf, void *p, size_t count);
|
||||
extern long __libc_ringbuf_write(
|
||||
struct ringbuf *buf,
|
||||
const void *p,
|
||||
size_t count);
|
||||
|
||||
extern int __libc_ringbuf_clear(struct ringbuf *buf);
|
||||
extern int __libc_ringbuf_resize(struct ringbuf *buf, size_t max);
|
||||
extern int __libc_ringbuf_resize_static(
|
||||
struct ringbuf *buf,
|
||||
void *p,
|
||||
size_t max);
|
||||
|
||||
extern size_t __libc_ringbuf_available(const struct ringbuf *buf);
|
||||
extern size_t __libc_ringbuf_capacity(const struct ringbuf *buf);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user