[components/lwp] clear ref to parent on waitpid() (#7741)

Signed-off-by: shell <smokewood@qq.com>
This commit is contained in:
Shell
2023-06-29 00:00:27 +08:00
committed by GitHub
parent eafc773186
commit 0b79bea7cd
2 changed files with 12 additions and 5 deletions
+8 -2
View File
@@ -7,6 +7,8 @@
* Date Author Notes
* 2012-09-30 Bernard first version.
* 2017-11-08 JasonJiaJie fix memory leak issue when close a pipe.
* 2023-06-28 shell return POLLHUP when writer closed its channel on poll()
* fix flag test on pipe_fops_open()
*/
#include <rthw.h>
#include <rtdevice.h>
@@ -65,12 +67,12 @@ static int pipe_fops_open(struct dfs_file *fd)
rt_mutex_take(&pipe->lock, RT_WAITING_FOREVER);
if ((fd->flags & O_RDONLY) == O_RDONLY)
if ((fd->flags & O_ACCMODE) == O_RDONLY)
{
pipe->reader = 1;
}
if ((fd->flags & O_WRONLY) == O_WRONLY)
if ((fd->flags & O_ACCMODE) == O_WRONLY)
{
pipe->writer = 1;
}
@@ -362,6 +364,10 @@ static int pipe_fops_poll(struct dfs_file *fd, rt_pollreq_t *req)
{
mask |= POLLIN;
}
else if (pipe->writer == 0)
{
mask = POLLHUP;
}
}
if (mode & 2)