diff --git a/Makefile b/Makefile index 49f09d0..760129d 100644 --- a/Makefile +++ b/Makefile @@ -10,6 +10,7 @@ ifneq ($(DEBUG), 1) CFLAGS += -fno-exceptions -fno-asynchronous-unwind-tables -fno-ident CFLAGS += -fno-unwind-tables -fno-stack-protector -fno-plt -fno-pic CFLAGS += -O3 -std=c99 -march=native -mtune=native -fomit-frame-pointer +CFLAGS += -fshort-enums else CFLAGS += -g -O0 -std=c99 -march=native -mtune=native CFLAGS += -DDEBUG diff --git a/ringbuf.c b/ringbuf.c index e3c7067..23adb94 100644 --- a/ringbuf.c +++ b/ringbuf.c @@ -107,7 +107,7 @@ rb_push_many(struct RingBuf *rb, const void *items, MEMCPY_T memcpy_fn, // Advance the write head rb->write_head = (char *)rb->write_head + rb->struct_size * n; - rb->count+=n; + rb->count += n; return WriteOk; } diff --git a/ringbuf.h b/ringbuf.h index 0117887..efffe50 100644 --- a/ringbuf.h +++ b/ringbuf.h @@ -25,8 +25,24 @@ struct RingBuf { void *buffer_end; /** The end of the buffer */ } __attribute__((packed)); -enum WriteResult { Full, WriteOk }; /** Result of a write */ -enum ReadResult { Empty, ReadOk }; /** Result of a read */ +/* + * Considerations: One hot encoding for the enum values + * (8 bit each with -fshort-enums) + */ + +/** Result of a write */ +enum WriteResult { + WriteOk, /** The write was successful */ + Full, /** The buffer is full */ + InsufficientSpace /** There is not enough space to write */ +}; + +/** Result of a read */ +enum ReadResult { + Empty, /** The buffer is empty */ + ReadOk, /** The read was successful */ + InsufficientData /** There is not enough data to read */ +}; /** * @brief Initialize the ring buffer