k_status_t csi_kernel_msgq_put()

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;
}