提交 dcaa0c16 编写于 作者: Z zhkag 提交者: guo

【更新】 消息队列存在时,使用 O_CREAT 不应创建新的消息队列

上级 1730874c
......@@ -121,7 +121,13 @@ mqd_t mq_open(const char *name, int oflag, ...)
rt_sem_take(&posix_mq_lock, RT_WAITING_FOREVER);
mqdes = RT_NULL;
if (oflag & O_CREAT)
/* find mqueue */
mqdes = posix_mq_find(name);
if (mqdes != RT_NULL)
{
mqdes->refcount ++; /* increase reference count */
}
else if (oflag & O_CREAT)
{
va_start(arg, oflag);
mode = (mode_t)va_arg(arg, unsigned int);
......@@ -161,17 +167,8 @@ mqd_t mq_open(const char *name, int oflag, ...)
}
else
{
/* find mqueue */
mqdes = posix_mq_find(name);
if (mqdes != RT_NULL)
{
mqdes->refcount ++; /* increase reference count */
}
else
{
rt_set_errno(ENOENT);
goto __return;
}
rt_set_errno(ENOENT);
goto __return;
}
rt_sem_release(&posix_mq_lock);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册