summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
authorDavid Lin <[email protected]>2020-04-13 07:20:29 +0800
committerGitHub <[email protected]>2020-04-13 07:20:29 +0800
commite9d930070d88362033312e0d7b6d07b0433e4069 (patch)
tree0fed3e8454f22604741c712cb97e36d6c132d010 /components
parentff09587d2381da4d02fd8a31a73e6271f3ca3e9f (diff)
Update pipe.c
Diffstat (limited to 'components')
-rw-r--r--components/drivers/src/pipe.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/components/drivers/src/pipe.c b/components/drivers/src/pipe.c
index 393370fc9a..2a7e143f6c 100644
--- a/components/drivers/src/pipe.c
+++ b/components/drivers/src/pipe.c
@@ -323,8 +323,14 @@ static const struct dfs_file_ops pipe_fops =
rt_err_t rt_pipe_open (rt_device_t device, rt_uint16_t oflag)
{
rt_pipe_t *pipe = (rt_pipe_t *)device;
+ rt_err_t ret = RT_EOK;
- if (device == RT_NULL) return -RT_EINVAL;
+ if (device == RT_NULL)
+ {
+ ret = -RT_EINVAL;
+ goto __exit;
+ }
+
rt_mutex_take(&(pipe->lock), RT_WAITING_FOREVER);
if (pipe->fifo == RT_NULL)
@@ -332,14 +338,14 @@ rt_err_t rt_pipe_open (rt_device_t device, rt_uint16_t oflag)
pipe->fifo = rt_ringbuffer_create(pipe->bufsz);
if (pipe->fifo == RT_NULL)
{
- rt_mutex_release(&(pipe->lock));
- return -RT_ENOMEM;
+ ret = -RT_ENOMEM;
}
}
rt_mutex_release(&(pipe->lock));
- return RT_EOK;
+__exit:
+ return ret;
}
rt_err_t rt_pipe_close (rt_device_t device)