#ifndef _LIBC_IO_RINGBUF_H_ #define _LIBC_IO_RINGBUF_H_ #include 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