summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
Diffstat (limited to 'components')
-rw-r--r--components/drivers/serial/serial.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/components/drivers/serial/serial.c b/components/drivers/serial/serial.c
index 5e7a8ec814..c4a7ac6980 100644
--- a/components/drivers/serial/serial.c
+++ b/components/drivers/serial/serial.c
@@ -257,8 +257,8 @@ static rt_size_t rt_serial_read(struct rt_device *dev,
}
read_nbytes = (rt_uint32_t)ptr - (rt_uint32_t)buffer;
- /* set error code */
- if (read_nbytes == 0)
+ /* set error code if and only if in thread context */
+ if (read_nbytes == 0 && !rt_interrupt_get_nest())
{
rt_set_errno(-RT_EEMPTY);
}
@@ -349,7 +349,8 @@ static rt_size_t rt_serial_write(struct rt_device *dev,
}
write_nbytes = (rt_uint32_t)ptr - (rt_uint32_t)buffer;
- if (write_nbytes == 0)
+ /* set error code if and only if in thread context */
+ if (write_nbytes == 0 && !rt_interrupt_get_nest())
{
rt_set_errno(-RT_EFULL);
}