summaryrefslogtreecommitdiff
path: root/examples/utest/testcases/kernel
diff options
context:
space:
mode:
authorzhkag <[email protected]>2023-06-26 12:06:06 +0800
committerGitHub <[email protected]>2023-06-26 00:06:06 -0400
commite65509a58eea37f504654a6fba1e11dd69026ebe (patch)
treea6a101d0f25e38f4613534cec4629c2b10b7d18f /examples/utest/testcases/kernel
parent64c1d626e2ccfe150cc4f9136c2f952dd2ff64f0 (diff)
[src][components][include]消息队列支持优先级 (#7382)
Diffstat (limited to 'examples/utest/testcases/kernel')
-rw-r--r--examples/utest/testcases/kernel/messagequeue_tc.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/examples/utest/testcases/kernel/messagequeue_tc.c b/examples/utest/testcases/kernel/messagequeue_tc.c
index 08d4049875..6d44c0042b 100644
--- a/examples/utest/testcases/kernel/messagequeue_tc.c
+++ b/examples/utest/testcases/kernel/messagequeue_tc.c
@@ -82,6 +82,25 @@ static void mq_send_case(rt_mq_t testmq)
rt_thread_delay(100);
}
+#ifdef RT_USING_MESSAGEQUEUE_PRIORITY
+ ret = rt_mq_send_wait_prio(testmq, &send_buf[3], sizeof(send_buf[0]), 3, 0, RT_UNINTERRUPTIBLE);
+ uassert_true(ret == RT_EOK);
+ ret = rt_mq_send_wait_prio(testmq, &send_buf[0], sizeof(send_buf[0]), 0, 0, RT_UNINTERRUPTIBLE);
+ uassert_true(ret == RT_EOK);
+
+ ret = rt_mq_send_wait_prio(testmq, &send_buf[2], sizeof(send_buf[0]), 1, 0, RT_UNINTERRUPTIBLE);
+ uassert_true(ret == RT_EOK);
+ ret = rt_mq_send_wait_prio(testmq, &send_buf[4], sizeof(send_buf[0]), 4, 0, RT_UNINTERRUPTIBLE);
+ uassert_true(ret == RT_EOK);
+ ret = rt_mq_send_wait_prio(testmq, &send_buf[1], sizeof(send_buf[0]), 1, 0, RT_UNINTERRUPTIBLE);
+ uassert_true(ret == RT_EOK);
+
+ while (testmq->entry != 0)
+ {
+ rt_thread_delay(100);
+ }
+#endif
+
ret = rt_mq_send(testmq, &send_buf[1], sizeof(send_buf[0]));
uassert_true(ret == RT_EOK);
ret = rt_mq_control(testmq, RT_IPC_CMD_RESET, RT_NULL);
@@ -121,6 +140,20 @@ static void mq_recv_case(rt_mq_t testmq)
uassert_true(ret >= 0);
uassert_true(recv_buf[var] == (var + 1));
}
+#ifdef RT_USING_MESSAGEQUEUE_PRIORITY
+ rt_int32_t msg_prio;
+ while (testmq->entry == MAX_MSGS)
+ {
+ rt_thread_delay(100);
+ }
+ for (int var = 0; var < MAX_MSGS; ++var)
+ {
+ ret = rt_mq_recv_prio(testmq, &recv_buf[var], sizeof(recv_buf[0]), &msg_prio, RT_WAITING_FOREVER, RT_UNINTERRUPTIBLE);
+ rt_kprintf("msg_prio = %d\r\n", msg_prio);
+ uassert_true(ret >= 0);
+ uassert_true(recv_buf[var] == (MAX_MSGS - var));
+ }
+#endif
}
static void mq_recv_entry(void *param)