diff options
Diffstat (limited to 'kernel/ringbuffer.c')
| -rw-r--r-- | kernel/ringbuffer.c | 21 |
1 files changed, 4 insertions, 17 deletions
diff --git a/kernel/ringbuffer.c b/kernel/ringbuffer.c index 181679a..31185dc 100644 --- a/kernel/ringbuffer.c +++ b/kernel/ringbuffer.c @@ -6,8 +6,7 @@ // TODO: this is disabled because a kb interrupt can occur anytime // and the kernel will need to access the ringbuffer while we are accessing! // DO WE need a spinlock in general? do not use a global one anyway!!!! - -static int sl=9; +//static int sl=9; ringbuffer ringbuffer_init(uint32_t size) { @@ -16,19 +15,15 @@ ringbuffer ringbuffer_init(uint32_t size) f.size=size*4096; f.front=f.size-1; f.back=f.size-1; - f.front=f.size-1; - f.back=f.size-1; return f; } -volatile bool ringbuffer_put(ringbuffer* f,uint8_t c) +bool ringbuffer_put(ringbuffer* f,uint8_t c) { x86_int_disable(); - lock_spin(sl); if((f->back-1+f->size)%f->size==f->front) { - lock_release(sl); x86_int_enable(); return false; } @@ -38,36 +33,29 @@ volatile bool ringbuffer_put(ringbuffer* f,uint8_t c) f->back+=f->size; f->back%=f->size; - lock_release(sl); x86_int_enable(); return true; } -volatile bool ringbuffer_has(ringbuffer* f) +bool ringbuffer_has(ringbuffer* f) { x86_int_disable(); bool res=true; - lock_spin(sl); - if(f->front==f->back) res=false; - lock_release(sl); x86_int_enable(); return res; } -volatile uint8_t ringbuffer_get(ringbuffer* f) // non blocking . please check first +uint8_t ringbuffer_get(ringbuffer* f) // non blocking . please check first { x86_int_disable(); char c; - lock_spin(sl); - if(f->front==f->back) { - lock_release(sl); x86_int_enable(); return ' '; } @@ -78,7 +66,6 @@ volatile uint8_t ringbuffer_get(ringbuffer* f) // non blocking . please check fi f->front+=f->size; f->front%=f->size; - lock_release(sl); x86_int_enable(); return c; } |
