summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhihong Chen <[email protected]>2023-10-12 10:23:51 +0800
committersakumisu <[email protected]>2023-10-12 14:38:13 +0800
commitd4ba2eef5779c9f1259668ff4f51430419c3ad2d (patch)
treea0347dfe2dd2a1cafb5403d46b3ebb6413e8151b
parent3d96f64f940ed6123a73433e7ce333de0f10d5bb (diff)
osal: add USB_OSAL_WAITING_FOREVER for Semaphore and Queue use
- add USB_OSAL_WAITING_FOREVER for Semaphore and Queue use Signed-off-by: Zhihong Chen <[email protected]>
-rw-r--r--class/hub/usbh_hub.c2
-rw-r--r--class/msc/usbd_msc.c2
-rw-r--r--osal/usb_osal.h2
-rw-r--r--osal/usb_osal_freertos.c12
-rw-r--r--osal/usb_osal_rtthread.c12
-rw-r--r--osal/usb_osal_yoc.c12
-rw-r--r--third_party/FreeRTOS-10.4/rndis_host/rndis_host.c2
-rw-r--r--third_party/rt-thread-4.1.1/rndis_host/rndis_host.c4
-rw-r--r--third_party/rt-thread-4.1.1/rndis_host/rndis_host_lwip2.1.2.c4
9 files changed, 39 insertions, 13 deletions
diff --git a/class/hub/usbh_hub.c b/class/hub/usbh_hub.c
index 6917bd2d..25038234 100644
--- a/class/hub/usbh_hub.c
+++ b/class/hub/usbh_hub.c
@@ -642,7 +642,7 @@ static void usbh_hub_thread(void *argument)
usb_hc_init();
while (1) {
- ret = usb_osal_mq_recv(hub_mq, (uintptr_t *)&hub, 0xffffffff);
+ ret = usb_osal_mq_recv(hub_mq, (uintptr_t *)&hub, USB_OSAL_WAITING_FOREVER);
if (ret < 0) {
continue;
}
diff --git a/class/msc/usbd_msc.c b/class/msc/usbd_msc.c
index d6955219..f30c6fba 100644
--- a/class/msc/usbd_msc.c
+++ b/class/msc/usbd_msc.c
@@ -845,7 +845,7 @@ static void usbdev_msc_thread(void *argument)
int ret;
while (1) {
- ret = usb_osal_mq_recv(g_usbd_msc.usbd_msc_mq, (uintptr_t *)&event, 0xffffffff);
+ ret = usb_osal_mq_recv(g_usbd_msc.usbd_msc_mq, (uintptr_t *)&event, USB_OSAL_WAITING_FOREVER);
if (ret < 0) {
continue;
}
diff --git a/osal/usb_osal.h b/osal/usb_osal.h
index af65186a..560b73ab 100644
--- a/osal/usb_osal.h
+++ b/osal/usb_osal.h
@@ -9,6 +9,8 @@
#include <stdint.h>
#include <string.h>
+#define USB_OSAL_WAITING_FOREVER (0xFFFFFFFFU)
+
typedef void *usb_osal_thread_t;
typedef void *usb_osal_sem_t;
typedef void *usb_osal_mutex_t;
diff --git a/osal/usb_osal_freertos.c b/osal/usb_osal_freertos.c
index de448d2d..2c4ed542 100644
--- a/osal/usb_osal_freertos.c
+++ b/osal/usb_osal_freertos.c
@@ -35,7 +35,11 @@ void usb_osal_sem_delete(usb_osal_sem_t sem)
int usb_osal_sem_take(usb_osal_sem_t sem, uint32_t timeout)
{
- return (xSemaphoreTake((SemaphoreHandle_t)sem, pdMS_TO_TICKS(timeout)) == pdPASS) ? 0 : -ETIMEDOUT;
+ if (timeout == USB_OSAL_WAITING_FOREVER) {
+ return (xSemaphoreTake((SemaphoreHandle_t)sem, portMAX_DELAY) == pdPASS) ? 0 : -ETIMEDOUT;
+ } else {
+ return (xSemaphoreTake((SemaphoreHandle_t)sem, pdMS_TO_TICKS(timeout)) == pdPASS) ? 0 : -ETIMEDOUT;
+ }
}
int usb_osal_sem_give(usb_osal_sem_t sem)
@@ -95,7 +99,11 @@ int usb_osal_mq_send(usb_osal_mq_t mq, uintptr_t addr)
int usb_osal_mq_recv(usb_osal_mq_t mq, uintptr_t *addr, uint32_t timeout)
{
- return (xQueueReceive((usb_osal_mq_t)mq, addr, timeout) == pdPASS) ? 0 : -ETIMEDOUT;
+ if (timeout == USB_OSAL_WAITING_FOREVER) {
+ return (xQueueReceive((usb_osal_mq_t)mq, addr, portMAX_DELAY) == pdPASS) ? 0 : -ETIMEDOUT;
+ } else {
+ return (xQueueReceive((usb_osal_mq_t)mq, addr, pdMS_TO_TICKS(timeout)) == pdPASS) ? 0 : -ETIMEDOUT;
+ }
}
size_t usb_osal_enter_critical_section(void)
diff --git a/osal/usb_osal_rtthread.c b/osal/usb_osal_rtthread.c
index a0f7563c..964c1a7f 100644
--- a/osal/usb_osal_rtthread.c
+++ b/osal/usb_osal_rtthread.c
@@ -40,7 +40,11 @@ int usb_osal_sem_take(usb_osal_sem_t sem, uint32_t timeout)
int ret = 0;
rt_err_t result = RT_EOK;
- result = rt_sem_take((rt_sem_t)sem, rt_tick_from_millisecond(timeout));
+ if (timeout == USB_OSAL_WAITING_FOREVER) {
+ result = rt_sem_take((rt_sem_t)sem, RT_WAITING_FOREVER);
+ } else {
+ result = rt_sem_take((rt_sem_t)sem, rt_tick_from_millisecond(timeout));
+ }
if (result == -RT_ETIMEOUT) {
ret = -ETIMEDOUT;
} else if (result == -RT_ERROR) {
@@ -92,7 +96,11 @@ int usb_osal_mq_recv(usb_osal_mq_t mq, uintptr_t *addr, uint32_t timeout)
int ret = 0;
rt_err_t result = RT_EOK;
- result = rt_mq_recv((rt_mq_t)mq, addr, sizeof(uintptr_t), rt_tick_from_millisecond(timeout));
+ if (timeout == USB_OSAL_WAITING_FOREVER) {
+ result = rt_mq_recv((rt_mq_t)mq, addr, sizeof(uintptr_t), RT_WAITING_FOREVER);
+ } else {
+ result = rt_mq_recv((rt_mq_t)mq, addr, sizeof(uintptr_t), rt_tick_from_millisecond(timeout));
+ }
if (result == -RT_ETIMEOUT) {
ret = -ETIMEDOUT;
} else if (result == -RT_ERROR) {
diff --git a/osal/usb_osal_yoc.c b/osal/usb_osal_yoc.c
index 962f9021..b782b296 100644
--- a/osal/usb_osal_yoc.c
+++ b/osal/usb_osal_yoc.c
@@ -38,7 +38,11 @@ void usb_osal_sem_delete(usb_osal_sem_t sem)
int usb_osal_sem_take(usb_osal_sem_t sem, uint32_t timeout)
{
- return aos_sem_wait((aos_sem_t *)&sem, timeout);
+ if (timeout == USB_OSAL_WAITING_FOREVER) {
+ return aos_sem_wait((aos_sem_t *)&sem, AOS_WAIT_FOREVER);
+ } else {
+ return aos_sem_wait((aos_sem_t *)&sem, timeout);
+ }
}
int usb_osal_sem_give(usb_osal_sem_t sem)
@@ -88,7 +92,11 @@ int usb_osal_mq_send(usb_osal_mq_t mq, uintptr_t addr)
int usb_osal_mq_recv(usb_osal_mq_t mq, uintptr_t *addr, uint32_t timeout)
{
size_t recv_size;
- return aos_queue_recv((aos_queue_t *)&mq, timeout, addr, &recv_size);
+ if (timeout == USB_OSAL_WAITING_FOREVER) {
+ return aos_queue_recv((aos_queue_t *)&mq, AOS_WAIT_FOREVER, addr, &recv_size);
+ } else {
+ return aos_queue_recv((aos_queue_t *)&mq, timeout, addr, &recv_size);
+ }
}
size_t usb_osal_enter_critical_section(void)
diff --git a/third_party/FreeRTOS-10.4/rndis_host/rndis_host.c b/third_party/FreeRTOS-10.4/rndis_host/rndis_host.c
index a0cf21f0..a006d144 100644
--- a/third_party/FreeRTOS-10.4/rndis_host/rndis_host.c
+++ b/third_party/FreeRTOS-10.4/rndis_host/rndis_host.c
@@ -159,7 +159,7 @@ static void lwip_rx_handle(void *pdata)
while (1) {
pmg_offset = 0;
payload_offset = 0;
- ret = usbh_rndis_bulk_in_transfer(rndis_class, rx_buf_ptr, RNDIS_RXETH_BUFFER_LEN, portMAX_DELAY);
+ ret = usbh_rndis_bulk_in_transfer(rndis_class, rx_buf_ptr, RNDIS_RXETH_BUFFER_LEN, USB_OSAL_WAITING_FOREVER);
if (ret <= 0) {
vTaskDelay(1);
continue;
diff --git a/third_party/rt-thread-4.1.1/rndis_host/rndis_host.c b/third_party/rt-thread-4.1.1/rndis_host/rndis_host.c
index e8c4cfbf..b6d2ad98 100644
--- a/third_party/rt-thread-4.1.1/rndis_host/rndis_host.c
+++ b/third_party/rt-thread-4.1.1/rndis_host/rndis_host.c
@@ -158,7 +158,7 @@ static rt_err_t rndis_msg_data_recv(struct usbh_user_rndis *rndis_class, rt_uint
if (rndis_class == RT_NULL) {
return -RT_ERROR;
}
- ret = usbh_rndis_bulk_in_transfer(rndis_class->rndis_class, buffer, nbytes, RT_WAITING_FOREVER);
+ ret = usbh_rndis_bulk_in_transfer(rndis_class->rndis_class, buffer, nbytes, USB_OSAL_WAITING_FOREVER);
return ret;
}
@@ -197,7 +197,7 @@ void rt_usbh_rndis_data_recv_entry(void *pdata)
int ret = 0;
int pmg_offset = 0;
int payload_offset = 0;
- ret = usbh_rndis_bulk_in_transfer(rndis_class->rndis_class, device->rx_buf_ptr, RNDIS_ETH_BUFFER_LEN, RT_WAITING_FOREVER);
+ ret = usbh_rndis_bulk_in_transfer(rndis_class->rndis_class, device->rx_buf_ptr, RNDIS_ETH_BUFFER_LEN, USB_OSAL_WAITING_FOREVER);
if (ret <= 0) {
rt_thread_mdelay(1);
continue;
diff --git a/third_party/rt-thread-4.1.1/rndis_host/rndis_host_lwip2.1.2.c b/third_party/rt-thread-4.1.1/rndis_host/rndis_host_lwip2.1.2.c
index c6db885b..624dc735 100644
--- a/third_party/rt-thread-4.1.1/rndis_host/rndis_host_lwip2.1.2.c
+++ b/third_party/rt-thread-4.1.1/rndis_host/rndis_host_lwip2.1.2.c
@@ -164,7 +164,7 @@ static rt_err_t rndis_msg_data_recv(struct usbh_user_rndis *rndis_class, rt_uint
if (rndis_class == RT_NULL) {
return -RT_ERROR;
}
- ret = usbh_rndis_bulk_in_transfer(rndis_class->rndis_class, buffer, nbytes, RT_WAITING_FOREVER);
+ ret = usbh_rndis_bulk_in_transfer(rndis_class->rndis_class, buffer, nbytes, USB_OSAL_WAITING_FOREVER);
return ret;
}
@@ -242,7 +242,7 @@ void rt_usbh_rndis_data_recv_entry(void *pdata)
while (1) {
pmg_offset = 0;
payload_offset = 0;
- ret = usbh_rndis_bulk_in_transfer(rndis_class->rndis_class, device->rx_buf_ptr, RNDIS_ETH_BUFFER_LEN, RT_WAITING_FOREVER);
+ ret = usbh_rndis_bulk_in_transfer(rndis_class->rndis_class, device->rx_buf_ptr, RNDIS_ETH_BUFFER_LEN, USB_OSAL_WAITING_FOREVER);
if (ret <= 0) {
rt_thread_mdelay(1);
continue;