diff options
| author | zhkag <[email protected]> | 2023-09-08 18:15:03 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-09-08 18:15:03 +0800 |
| commit | 0b9a808ccacfd900c3cfc3a69cce7688b3bcaeb8 (patch) | |
| tree | 4b2a6a28f79d69f54ba058c4f151a025ca28ee4b | |
| parent | dfc8994ea2aa3fb4c13e59fcbf005983fc6fe03e (diff) | |
[posix]修复消息队列返回长度异常 (#8014)
| -rw-r--r-- | components/libc/posix/ipc/mqueue.c | 4 | ||||
| -rw-r--r-- | examples/utest/testcases/kernel/messagequeue_tc.c | 2 | ||||
| -rw-r--r-- | include/rtthread.h | 12 | ||||
| -rw-r--r-- | src/ipc.c | 12 |
4 files changed, 15 insertions, 15 deletions
diff --git a/components/libc/posix/ipc/mqueue.c b/components/libc/posix/ipc/mqueue.c index 45a1382313..a452092875 100644 --- a/components/libc/posix/ipc/mqueue.c +++ b/components/libc/posix/ipc/mqueue.c @@ -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); if (result >= 0) - return rt_strlen(msg_ptr); + return result; rt_set_errno(EBADF); 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); if (result >= 0) - return rt_strlen(msg_ptr); + return result; if (result == -RT_ETIMEOUT) rt_set_errno(ETIMEDOUT); diff --git a/examples/utest/testcases/kernel/messagequeue_tc.c b/examples/utest/testcases/kernel/messagequeue_tc.c index 6d44c0042b..8c44db4c67 100644 --- a/examples/utest/testcases/kernel/messagequeue_tc.c +++ b/examples/utest/testcases/kernel/messagequeue_tc.c @@ -125,7 +125,7 @@ static void mq_send_entry(void *param) static void mq_recv_case(rt_mq_t testmq) { 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) { diff --git a/include/rtthread.h b/include/rtthread.h index 4c23e43e2a..d4fea8fe7a 100644 --- a/include/rtthread.h +++ b/include/rtthread.h @@ -517,12 +517,12 @@ rt_err_t rt_mq_send_wait_prio(rt_mq_t mq, rt_int32_t prio, rt_int32_t timeout, int suspend_flag); -rt_err_t rt_mq_recv_prio(rt_mq_t mq, - void *buffer, - rt_size_t size, - rt_int32_t *prio, - rt_int32_t timeout, - int suspend_flag); +rt_ssize_t rt_mq_recv_prio(rt_mq_t mq, + void *buffer, + rt_size_t size, + rt_int32_t *prio, + rt_int32_t timeout, + int suspend_flag); #endif /* RT_USING_MESSAGEQUEUE_PRIORITY */ #endif /* RT_USING_MESSAGEQUEUE */ @@ -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); } -rt_err_t rt_mq_recv_prio(rt_mq_t mq, - void *buffer, - rt_size_t size, - rt_int32_t *prio, - rt_int32_t timeout, - int suspend_flag) +rt_ssize_t rt_mq_recv_prio(rt_mq_t mq, + void *buffer, + rt_size_t size, + rt_int32_t *prio, + rt_int32_t timeout, + int suspend_flag) { return _rt_mq_recv(mq, buffer, size, prio, timeout, suspend_flag); } |
