[posix]修复消息队列返回长度异常 (#8014)

This commit is contained in:
zhkag 2023-09-08 18:15:03 +08:00 committed by GitHub
parent dfc8994ea2
commit 0b9a808cca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 15 additions and 15 deletions

View File

@ -130,7 +130,7 @@ ssize_t mq_receive(mqd_t id, char *msg_ptr, size_t msg_len, unsigned *msg_prio)
result = rt_mq_recv_prio(mq, msg_ptr, msg_len, (rt_int32_t *)msg_prio, RT_WAITING_FOREVER, RT_UNINTERRUPTIBLE); result = rt_mq_recv_prio(mq, msg_ptr, msg_len, (rt_int32_t *)msg_prio, RT_WAITING_FOREVER, RT_UNINTERRUPTIBLE);
if (result >= 0) if (result >= 0)
return rt_strlen(msg_ptr); return result;
rt_set_errno(EBADF); rt_set_errno(EBADF);
return -1; return -1;
@ -186,7 +186,7 @@ ssize_t mq_timedreceive(mqd_t id,
result = rt_mq_recv_prio(mq, msg_ptr, msg_len, (rt_int32_t *)msg_prio, tick, RT_UNINTERRUPTIBLE); result = rt_mq_recv_prio(mq, msg_ptr, msg_len, (rt_int32_t *)msg_prio, tick, RT_UNINTERRUPTIBLE);
if (result >= 0) if (result >= 0)
return rt_strlen(msg_ptr); return result;
if (result == -RT_ETIMEOUT) if (result == -RT_ETIMEOUT)
rt_set_errno(ETIMEDOUT); rt_set_errno(ETIMEDOUT);

View File

@ -125,7 +125,7 @@ static void mq_send_entry(void *param)
static void mq_recv_case(rt_mq_t testmq) static void mq_recv_case(rt_mq_t testmq)
{ {
rt_uint32_t recv_buf[MAX_MSGS+1] = {0}; rt_uint32_t recv_buf[MAX_MSGS+1] = {0};
rt_err_t ret = RT_EOK; rt_ssize_t ret = RT_EOK;
for (int var = 0; var < MAX_MSGS + 1; ++var) for (int var = 0; var < MAX_MSGS + 1; ++var)
{ {

View File

@ -517,12 +517,12 @@ rt_err_t rt_mq_send_wait_prio(rt_mq_t mq,
rt_int32_t prio, rt_int32_t prio,
rt_int32_t timeout, rt_int32_t timeout,
int suspend_flag); int suspend_flag);
rt_err_t rt_mq_recv_prio(rt_mq_t mq, rt_ssize_t rt_mq_recv_prio(rt_mq_t mq,
void *buffer, void *buffer,
rt_size_t size, rt_size_t size,
rt_int32_t *prio, rt_int32_t *prio,
rt_int32_t timeout, rt_int32_t timeout,
int suspend_flag); int suspend_flag);
#endif /* RT_USING_MESSAGEQUEUE_PRIORITY */ #endif /* RT_USING_MESSAGEQUEUE_PRIORITY */
#endif /* RT_USING_MESSAGEQUEUE */ #endif /* RT_USING_MESSAGEQUEUE */

View File

@ -3805,12 +3805,12 @@ rt_err_t rt_mq_send_wait_prio(rt_mq_t mq,
{ {
return _rt_mq_send_wait(mq, buffer, size, prio, timeout, suspend_flag); return _rt_mq_send_wait(mq, buffer, size, prio, timeout, suspend_flag);
} }
rt_err_t rt_mq_recv_prio(rt_mq_t mq, rt_ssize_t rt_mq_recv_prio(rt_mq_t mq,
void *buffer, void *buffer,
rt_size_t size, rt_size_t size,
rt_int32_t *prio, rt_int32_t *prio,
rt_int32_t timeout, rt_int32_t timeout,
int suspend_flag) int suspend_flag)
{ {
return _rt_mq_recv(mq, buffer, size, prio, timeout, suspend_flag); return _rt_mq_recv(mq, buffer, size, prio, timeout, suspend_flag);
} }