summaryrefslogtreecommitdiff
path: root/include/rtthread.h
diff options
context:
space:
mode:
authorzhkag <[email protected]>2023-06-21 10:22:42 +0000
committerGitHub <[email protected]>2023-06-21 18:22:42 +0800
commit33f550cb65c950068ff04c331daeeda3547d2e50 (patch)
treed04ca979398cfaa280cd9f19e400a40943f96bde /include/rtthread.h
parentb4e59bac4e2d8b039a2365ddc219ac9a3caf0f77 (diff)
[Kernel] message 可以返回消息的实际大小 (#7709)
Diffstat (limited to 'include/rtthread.h')
-rw-r--r--include/rtthread.h16
1 files changed, 13 insertions, 3 deletions
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);