summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2023-11-24 21:11:25 +0800
committersakumisu <[email protected]>2023-11-24 21:11:25 +0800
commitb5f0c043e7a54706cbe48db4189be1c44ceddfaf (patch)
tree1702c52a0e7f56d25eafae21c43cc6ce67c393cd
parent84299ce80b653ad5af8f3c869a904d67235c76d5 (diff)
reset sem before taking
-rw-r--r--osal/usb_osal_freertos.c1
-rw-r--r--osal/usb_osal_rtthread.c1
2 files changed, 2 insertions, 0 deletions
diff --git a/osal/usb_osal_freertos.c b/osal/usb_osal_freertos.c
index 2c4ed542..b98b69ac 100644
--- a/osal/usb_osal_freertos.c
+++ b/osal/usb_osal_freertos.c
@@ -35,6 +35,7 @@ void usb_osal_sem_delete(usb_osal_sem_t sem)
int usb_osal_sem_take(usb_osal_sem_t sem, uint32_t timeout)
{
+ xQueueReset((QueueHandle_t)sem);
if (timeout == USB_OSAL_WAITING_FOREVER) {
return (xSemaphoreTake((SemaphoreHandle_t)sem, portMAX_DELAY) == pdPASS) ? 0 : -ETIMEDOUT;
} else {
diff --git a/osal/usb_osal_rtthread.c b/osal/usb_osal_rtthread.c
index 964c1a7f..4713e189 100644
--- a/osal/usb_osal_rtthread.c
+++ b/osal/usb_osal_rtthread.c
@@ -40,6 +40,7 @@ int usb_osal_sem_take(usb_osal_sem_t sem, uint32_t timeout)
int ret = 0;
rt_err_t result = RT_EOK;
+ rt_sem_control((rt_sem_t)sem, RT_IPC_CMD_RESET, (void *)0);
if (timeout == USB_OSAL_WAITING_FOREVER) {
result = rt_sem_take((rt_sem_t)sem, RT_WAITING_FOREVER);
} else {