git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* Remove the debugging hack in procvm.c
[lunaix-os.git]
/
lunaix-os
/
kernel
/
ds
/
fifo.c
diff --git
a/lunaix-os/kernel/ds/fifo.c
b/lunaix-os/kernel/ds/fifo.c
index 3741ac9d07fe8ee5418917d9f107a4466b17df68..5ecddad57b00a6c70bd78dd3629b9cb4e505e957 100644
(file)
--- 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;
}
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)
{
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;
{
size_t wr_count = 0, wr_pos = fbuf->wr_pos;
+ if (!count) {
+ return 0;
+ }
+
mutex_lock(&fbuf->lock);
if (!fbuf->free_len) {
mutex_lock(&fbuf->lock);
if (!fbuf->free_len) {