| 127 | } |
| 128 | |
| 129 | static void mq_recv_case(rt_mq_t testmq) |
| 130 | { |
| 131 | rt_uint32_t recv_buf[MAX_MSGS+1] = {0}; |
| 132 | rt_ssize_t ret = RT_EOK; |
| 133 | |
| 134 | for (int var = 0; var < MAX_MSGS + 1; ++var) |
| 135 | { |
| 136 | ret = rt_mq_recv(testmq, &recv_buf[var], sizeof(recv_buf[0]), RT_WAITING_FOREVER); |
| 137 | uassert_true(ret >= 0); |
| 138 | uassert_true(recv_buf[var] == (var + 1)); |
| 139 | } |
| 140 | |
| 141 | for (int var = 0; var < 3; ++var) |
| 142 | { |
| 143 | ret = rt_mq_recv(testmq, &recv_buf[var], sizeof(recv_buf[0]), RT_WAITING_FOREVER); |
| 144 | uassert_true(ret >= 0); |
| 145 | uassert_true(recv_buf[var] == (var + 1)); |
| 146 | } |
| 147 | #ifdef RT_USING_MESSAGEQUEUE_PRIORITY |
| 148 | rt_int32_t msg_prio; |
| 149 | while (testmq->entry == MAX_MSGS) |
| 150 | { |
| 151 | rt_thread_delay(100); |
| 152 | } |
| 153 | for (int var = 0; var < MAX_MSGS; ++var) |
| 154 | { |
| 155 | ret = rt_mq_recv_prio(testmq, &recv_buf[var], sizeof(recv_buf[0]), &msg_prio, RT_WAITING_FOREVER, RT_UNINTERRUPTIBLE); |
| 156 | rt_kprintf("msg_prio = %d\r\n", msg_prio); |
| 157 | uassert_true(ret >= 0); |
| 158 | uassert_true(recv_buf[var] == (MAX_MSGS - var)); |
| 159 | } |
| 160 | #endif |
| 161 | } |
| 162 | |
| 163 | static void mq_recv_entry(void *param) |
| 164 | { |
no test coverage detected