X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/45e1f8b055043e54be35462852ab6649d634da7c..11b423249f224e3c9b7d940862c3cae310f81a23:/lunaix-os/kernel/ds/fifo.c diff --git a/lunaix-os/kernel/ds/fifo.c b/lunaix-os/kernel/ds/fifo.c index 3741ac9..5ecddad 100644 --- a/lunaix-os/kernel/ds/fifo.c +++ b/lunaix-os/kernel/ds/fifo.c @@ -78,6 +78,16 @@ fifo_readone_async(struct fifo_buf* fbuf, u8_t* data) return 1; } +size_t +fifo_readone(struct fifo_buf* fbuf, u8_t* data) +{ + mutex_lock(&fbuf->lock); + size_t retval = fifo_readone_async(fbuf, data); + mutex_unlock(&fbuf->lock); + + return retval; +} + void fifo_set_rdptr(struct fifo_buf* fbuf, size_t rdptr) { @@ -105,6 +115,10 @@ fifo_write(struct fifo_buf* fbuf, void* data, size_t count) { size_t wr_count = 0, wr_pos = fbuf->wr_pos; + if (!count) { + return 0; + } + mutex_lock(&fbuf->lock); if (!fbuf->free_len) {