From 9c8cfc2e52b0446f7cab14325028075760869b45 Mon Sep 17 00:00:00 2001 From: Michal Idziorek Date: Wed, 26 Nov 2014 17:42:33 +0100 Subject: further cleanup --- lib/buffer/ringbuffer.c | 46 ++++++++-------------------------------------- lib/logger/log.c | 20 ++++++++++---------- 2 files changed, 18 insertions(+), 48 deletions(-) (limited to 'lib') diff --git a/lib/buffer/ringbuffer.c b/lib/buffer/ringbuffer.c index 9e3adaf..dcf7bc2 100644 --- a/lib/buffer/ringbuffer.c +++ b/lib/buffer/ringbuffer.c @@ -3,45 +3,37 @@ // todo: syncing access to buffer. #define FOOLOS_MODULE_NAME "ringbuffer" + #include "lib/bool/bool.h" #include "lib/logger/log.h" #include "kernel/spinlock.h" -static volatile int front; -static volatile int back; -static volatile int size; - #define RINGBUFFER_SIZE 10 +static volatile int size=RINGBUFFER_SIZE; +static volatile int front=RINGBUFFER_SIZE-1; +static volatile int back=RINGBUFFER_SIZE-1; static volatile char buf[RINGBUFFER_SIZE]; -bool ringbuffer_selftest(); - -void ringbuffer_init() -{ - size=RINGBUFFER_SIZE; - front=size-1; - back=size-1; - -// ringbuffer_selftest(); -// while(1); -} - bool ringbuffer_put(char c) { + log(FOOLOS_MODULE_NAME,FOOLOS_LOG_FINE,"put wants lock)"); lock_spin(3); log(FOOLOS_MODULE_NAME,FOOLOS_LOG_FINE,"locked by put)"); + if((back-1+size)%size==front) { lock_release(3); log(FOOLOS_MODULE_NAME,FOOLOS_LOG_FINE,"unlocked by put)"); return false; } + buf[back]=c; log(FOOLOS_MODULE_NAME,FOOLOS_LOG_FINE,"put %d %d (%c)", back, front,c); back--; back+=size; back%=size; + lock_release(3); log(FOOLOS_MODULE_NAME,FOOLOS_LOG_FINE,"unlocked by put)"); @@ -51,7 +43,6 @@ bool ringbuffer_put(char c) bool ringbuffer_get(char *c) { - log(FOOLOS_MODULE_NAME,FOOLOS_LOG_FINE,"get wants lock)"); lock_spin(3); log(FOOLOS_MODULE_NAME,FOOLOS_LOG_FINE,"locked by get)"); @@ -74,24 +65,3 @@ bool ringbuffer_get(char *c) return true; } - -bool ringbuffer_selftest() -{ - log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"ringbuffer selftest"); - char c; - - ringbuffer_put('a'); - ringbuffer_put('b'); - ringbuffer_put('c'); - ringbuffer_put('d'); - ringbuffer_put('e'); - - ringbuffer_get(&c); - ringbuffer_get(&c); - ringbuffer_get(&c); - ringbuffer_get(&c); - ringbuffer_get(&c); - ringbuffer_get(&c); - ringbuffer_get(&c); - -} diff --git a/lib/logger/log.c b/lib/logger/log.c index 703658a..d58d2d6 100644 --- a/lib/logger/log.c +++ b/lib/logger/log.c @@ -14,23 +14,16 @@ static char buffer[LOG_BUF_SIZE]; static int first=0; static int last=0; -static bool init=false; void log(char *module_name, int log_level, char *format_string, ...) { -#ifdef FOOLOS_LOG_OFF + #ifdef FOOLOS_LOG_OFF return; -#endif + #endif if(log_level