in RISC-V_RV32_THEAD_SMART_CDS/csi_kernel/freertosv10.3.1/adapter/csi_freertos.c [951:988]
k_status_t csi_kernel_msgq_put(k_msgq_handle_t mq_handle, const void *msg_ptr, uint8_t front_or_back, int32_t timeout)
{
int tmp = 0;
if ((!mq_handle) || (msg_ptr == NULL) || ((front_or_back != 0) && (front_or_back != 1))) {
return -EINVAL;
}
if (timeout < 0) {
timeout = portMAX_DELAY;
}
if (CK_IN_INTRP()) {
if (front_or_back == 1) {
tmp = xQueueSendToFrontFromISR(mq_handle, msg_ptr, NULL);
goto out;
} else if (front_or_back == 0) {
tmp = xQueueSendToBackFromISR(mq_handle, msg_ptr, NULL);
goto out;
}
}
if (front_or_back == 1) {
tmp = xQueueSendToFront(mq_handle, msg_ptr, timeout);
} else if (front_or_back == 0) {
tmp = xQueueSendToBack(mq_handle, msg_ptr, timeout);
}
out:
if (tmp == 1) {
return 0;
} else if (tmp == 0) {
return -EBUSY;
}
return 0;
}