From bd5c0694678df3361eddaedcf9ceca6db687e010 Mon Sep 17 00:00:00 2001 From: Michal Idziorek Date: Fri, 22 May 2015 03:38:45 +0200 Subject: moving/removing some direcories --- xxx/lib/buffer/ringbuffer.c | 76 --------------------------------------------- 1 file changed, 76 deletions(-) delete mode 100644 xxx/lib/buffer/ringbuffer.c (limited to 'xxx/lib/buffer/ringbuffer.c') diff --git a/xxx/lib/buffer/ringbuffer.c b/xxx/lib/buffer/ringbuffer.c deleted file mode 100644 index a121df1..0000000 --- a/xxx/lib/buffer/ringbuffer.c +++ /dev/null @@ -1,76 +0,0 @@ -// can handle one buffer for a start. -// later make it reentrant and manage multiple buffers! -// todo: syncing access to buffer. - -#define FOOLOS_MODULE_NAME "ringbuffer" - -#include "ringbuffer.h" -#include "kernel/x86.h" -#include "lib/logger/log.h" -#include "kernel/spinlock.h" - -#define RINGBUFFER_SIZE 10 -static int size=RINGBUFFER_SIZE; -static volatile int front=RINGBUFFER_SIZE-1; -static volatile int back=RINGBUFFER_SIZE-1; -static volatile char buf[RINGBUFFER_SIZE]; - -static spinlock sl=9; - -bool ringbuffer_put(char c) -{ - - x86_int_disable(); - log(FOOLOS_MODULE_NAME,FOOLOS_LOG_FINE,"put wants lock"); - lock_spin(sl); - log(FOOLOS_MODULE_NAME,FOOLOS_LOG_FINE,"locked by put"); - - if((back-1+size)%size==front) - { - lock_release(sl); - log(FOOLOS_MODULE_NAME,FOOLOS_LOG_FINE,"unlocked by put"); - x86_int_enable(); - 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(sl); - log(FOOLOS_MODULE_NAME,FOOLOS_LOG_FINE,"unlocked by put"); - x86_int_enable(); - - return true; -} - -bool ringbuffer_get(char *c) -{ - x86_int_disable(); - log(FOOLOS_MODULE_NAME,FOOLOS_LOG_FINE,"get wants lock"); - lock_spin(sl); - log(FOOLOS_MODULE_NAME,FOOLOS_LOG_FINE,"locked by get"); - if(front==back) - { - lock_release(sl); - log(FOOLOS_MODULE_NAME,FOOLOS_LOG_FINE,"unlocked by get"); - x86_int_enable(); - *c='_'; - return false; - } - - *c=buf[front]; - log(FOOLOS_MODULE_NAME,FOOLOS_LOG_FINE,"get %d %d (%c)", back, front,*c); - - front--; - front+=size; - front%=size; - - lock_release(sl); - log(FOOLOS_MODULE_NAME,FOOLOS_LOG_FINE,"unlocked by get"); - x86_int_enable(); - - return true; -} -- cgit v1.2.3