54 lines
1.2 KiB
C
54 lines
1.2 KiB
C
|
|
#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
|