From 474c803c32fe055b4f09cb779f22b70d7eba8325 Mon Sep 17 00:00:00 2001 From: Miguel Date: Wed, 17 Oct 2018 02:39:56 +0200 Subject: screen areas invalidation --- kernel/ringbuffer.c | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) (limited to 'kernel/ringbuffer.c') diff --git a/kernel/ringbuffer.c b/kernel/ringbuffer.c index 3526f4d..f11e02b 100644 --- a/kernel/ringbuffer.c +++ b/kernel/ringbuffer.c @@ -1,14 +1,15 @@ #include "ringbuffer.h" #include "kmalloc.h" #include "log.h" +#include "asm_x86.h" ringbuffer ringbuffer_init(uint32_t size) { ringbuffer f; f.data=kballoc(size); f.size=size*4096; - f.front=f.size-1; - f.back=f.size-1; + f.front=0; + f.back=0; return f; } @@ -19,14 +20,12 @@ void ringbuffer_free(ringbuffer *f) bool ringbuffer_full(ringbuffer* f) { - if((f->back-1+f->size)%f->size==f->front)return true; - return false; + return((f->back+1)%f->size==f->front); } bool ringbuffer_empty(ringbuffer* f) { - if(f->front==f->back)return true; - return false; + return(f->front==f->back); } bool ringbuffer_has(ringbuffer* f) @@ -34,8 +33,6 @@ bool ringbuffer_has(ringbuffer* f) return !ringbuffer_empty(f); } -// - bool ringbuffer_put(ringbuffer* f,uint8_t c) { if(ringbuffer_full(f)) @@ -45,8 +42,7 @@ bool ringbuffer_put(ringbuffer* f,uint8_t c) } f->data[f->back]=c; - f->back--; - f->back+=f->size; + f->back++; f->back%=f->size; return true; @@ -57,11 +53,8 @@ uint8_t ringbuffer_get(ringbuffer* f) if(ringbuffer_empty(f))return 0; // indistinguishable from value 0 :( // TODO uint8_t c = f->data[f->front]; - - f->front--; - f->front+=f->size; + f->front++; f->front%=f->size; - return c; } -- cgit v1.2.3