From 33f550cb65c950068ff04c331daeeda3547d2e50 Mon Sep 17 00:00:00 2001 From: zhkag Date: Wed, 21 Jun 2023 10:22:42 +0000 Subject: [Kernel] message 可以返回消息的实际大小 (#7709) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/rtthread.h | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'include/rtthread.h') diff --git a/include/rtthread.h b/include/rtthread.h index ac1b8f12c2..dfcd1c413c 100644 --- a/include/rtthread.h +++ b/include/rtthread.h @@ -458,6 +458,16 @@ rt_err_t rt_mb_control(rt_mailbox_t mb, int cmd, void *arg); #endif #ifdef RT_USING_MESSAGEQUEUE + +struct rt_mq_message +{ + struct rt_mq_message *next; + rt_ssize_t length; +}; + +#define RT_MQ_BUF_SIZE(msg_size, max_msgs) \ +((RT_ALIGN((msg_size), RT_ALIGN_SIZE) + sizeof(struct rt_mq_message)) * (max_msgs)) + /* * message queue interface */ @@ -492,15 +502,15 @@ rt_err_t rt_mq_send_wait_killable(rt_mq_t mq, rt_size_t size, rt_int32_t timeout); rt_err_t rt_mq_urgent(rt_mq_t mq, const void *buffer, rt_size_t size); -rt_err_t rt_mq_recv(rt_mq_t mq, +rt_ssize_t rt_mq_recv(rt_mq_t mq, void *buffer, rt_size_t size, rt_int32_t timeout); -rt_err_t rt_mq_recv_interruptible(rt_mq_t mq, +rt_ssize_t rt_mq_recv_interruptible(rt_mq_t mq, void *buffer, rt_size_t size, rt_int32_t timeout); -rt_err_t rt_mq_recv_killable(rt_mq_t mq, +rt_ssize_t rt_mq_recv_killable(rt_mq_t mq, void *buffer, rt_size_t size, rt_int32_t timeout); -- cgit v1.3.1