diff options
| author | Miguel <m.i@gmx.at> | 2018-08-17 21:41:21 +0200 |
|---|---|---|
| committer | Miguel <m.i@gmx.at> | 2018-08-17 21:41:21 +0200 |
| commit | c15925a24efe14f437d8a2699500241a58fdc8f9 (patch) | |
| tree | c0db3a7d2a4f857324735df35e9cc1f0539c5f24 /kernel/fifo.c | |
| parent | 6fd78c2ff950310d8372ec0353553cc4a5a43e72 (diff) | |
cleanup and working on fifo pipes
Diffstat (limited to 'kernel/fifo.c')
| -rw-r--r-- | kernel/fifo.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/kernel/fifo.c b/kernel/fifo.c index 314e9ff..eb477be 100644 --- a/kernel/fifo.c +++ b/kernel/fifo.c @@ -1,11 +1,21 @@ +#define FOOLOS_MODULE_NAME "fifo" #include "fifo.h" +#include "ringbuffer.h" +#include "config.h" +#include "lib/logger/log.h" + +#include <stddef.h> + +static ringbuffer fifo_ringbuffers[FIFO_MAX_RINGBUFFERS]; +static ringbuffer_c=0; + bool fifo_put(fifo* f,uint8_t c) { return f->put(f->data,c); } -volatile uint8_t fifo_get(fifo* f) +uint8_t fifo_get(fifo* f) { return f->get(f->data); } @@ -14,3 +24,16 @@ bool fifo_has(fifo* f) { return f->has(f->data); } + +fifo fifo_create_buffered(uint8_t size) +{ + if (ringbuffer_c>=FIFO_MAX_RINGBUFFERS) panic(FOOLOS_MODULE_NAME,"ran out of ringbuffers for fifos"); + + fifo f; + fifo_ringbuffers[ringbuffer_c]=ringbuffer_init(size); + f.data=&fifo_ringbuffers[ringbuffer_c]; + f.put=ringbuffer_put; + f.get=ringbuffer_get; + f.has=ringbuffer_has; + return f; +} |
