summaryrefslogtreecommitdiff
path: root/src/cbuffer.h
blob: 5fc2de087a61c370a1c7fa98bba6c7174ff74be3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdint.h>

#ifndef __CBUFFER_H
#define __CBUFFER_H

struct cbuffer {
	uint8_t buffer[1 << 10];
	int read_index;
	int write_index;
};

#define buffer_size(buf) (sizeof((buf)->buffer))
#define buffer_used(buf) (((buf)->write_index - (buf)->read_index) & (buffer_size(buf) - 1))
#define buffer_free(buf) (buffer_size(buf) - 1 - buffer_used(buf))

int buffered_write(int fd, struct cbuffer *buf);
int buffered_read(int fd, struct cbuffer *buf);

#define DIR_REV(i) ((i == 1) ? 0 : 1)

#endif /* ~__CBUFFER_H */