Skip to content

Commit

Permalink
添加测试用例
Browse files Browse the repository at this point in the history
  • Loading branch information
zhkag committed Jun 25, 2023
1 parent 7b7a370 commit c11f9a9
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 4 deletions.
33 changes: 33 additions & 0 deletions examples/utest/testcases/kernel/messagequeue_tc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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)
Expand Down
8 changes: 4 additions & 4 deletions src/ipc.c
Original file line number Diff line number Diff line change
Expand Up @@ -3310,15 +3310,15 @@ static rt_err_t _rt_mq_send_wait(rt_mq_t mq,
if (mq->msg_queue_head == RT_NULL)
mq->msg_queue_head = msg;

struct rt_mq_message *node, *prevNode = RT_NULL;
struct rt_mq_message *node, *prev_node = RT_NULL;
for (node = mq->msg_queue_head; node != RT_NULL; node = node->next)
{
if (node->prio < msg->prio)
{
if (prevNode == RT_NULL)
if (prev_node == RT_NULL)
mq->msg_queue_head = msg;
else
prevNode->next = msg;
prev_node->next = msg;
msg->next = node;
break;
}
Expand All @@ -3329,7 +3329,7 @@ static rt_err_t _rt_mq_send_wait(rt_mq_t mq,
mq->msg_queue_tail = msg;
break;
}
prevNode = node;
prev_node = node;
}
#else
/* link msg to message queue */
Expand Down

0 comments on commit c11f9a9

Please sign in to comment.