summaryrefslogtreecommitdiff
path: root/kernel/ringbuffer.c
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2018-10-04 00:53:30 +0200
committerMiguel <m.i@gmx.at>2018-10-04 00:53:30 +0200
commitce16fe524c14ccaae67fb634105da5aef08ead48 (patch)
tree03990f29389bd4c55f40b804b809c7060c24c739 /kernel/ringbuffer.c
parenta455cd5af26bf8731e7c981a9421b16ab34dae6f (diff)
moving framebuffer access completely to userspace
Diffstat (limited to 'kernel/ringbuffer.c')
-rw-r--r--kernel/ringbuffer.c58
1 files changed, 34 insertions, 24 deletions
diff --git a/kernel/ringbuffer.c b/kernel/ringbuffer.c
index 43d0e33..3886340 100644
--- a/kernel/ringbuffer.c
+++ b/kernel/ringbuffer.c
@@ -16,48 +16,58 @@ void ringbuffer_free(ringbuffer *f)
kbfree(f->data);
}
-bool ringbuffer_put(ringbuffer* f,uint8_t c)
+bool ringbuffer_full(ringbuffer* f)
{
- if(ringbuffer_full(f))return false;
-
- f->data[f->back]=c;
- f->back--;
- f->back+=f->size;
- f->back%=f->size;
- return true;
+ if((f->back-1+f->size)%f->size==f->front)return true;
+ return false;
}
-bool ringbuffer_full(ringbuffer* f)
+bool ringbuffer_empty(ringbuffer* f)
{
- if((f->back-1+f->size)%f->size==f->front)
- {
- return true;
- }
+ if(f->front==f->back)return true;
return false;
}
bool ringbuffer_has(ringbuffer* f)
{
- bool res=true;
+ return !ringbuffer_empty(f);
+}
+
+//
+
+bool ringbuffer_put(ringbuffer* f,uint8_t c)
+{
+ if(ringbuffer_full(f))return false;
+
+ f->data[f->back]=c;
+ f->back--;
+ f->back+=f->size;
+ f->back%=f->size;
- if(f->front==f->back)
- res=false;
- return res;
+ return true;
}
uint8_t ringbuffer_get(ringbuffer* f)
{
- char c;
-
- if(f->front==f->back)
- {
- return 0;
- }
+ if(ringbuffer_empty(f))return 0; // indistinguishable from value 0 :( // TODO
- c=f->data[f->front];
+ uint8_t c = f->data[f->front];
f->front--;
f->front+=f->size;
f->front%=f->size;
+
return c;
}
+
+// TODO //
+
+uint32_t ringbuffer_write(ringbuffer* f, uint8_t *buf, uint32_t size)
+{
+ return 0;
+}
+
+uint32_t ringbuffer_read(ringbuffer* f, uint8_t *buf, uint32_t size)
+{
+ return 0;
+}