diff options
| author | sakimisu <[email protected]> | 2023-07-05 22:39:47 +0800 |
|---|---|---|
| committer | sakimisu <[email protected]> | 2023-07-05 22:53:13 +0800 |
| commit | 7574063e9481e245e604f094986c016a1c87638c (patch) | |
| tree | 1030b0c1eb8cfc41ea0f6fa7d5618350823b5604 /osal | |
| parent | 0d916af297d1e591bf2d9a93ffbaa22c93df87af (diff) | |
enum device with disposable thread, do not block hub thread
Diffstat (limited to 'osal')
| -rw-r--r-- | osal/usb_osal.h | 4 | ||||
| -rw-r--r-- | osal/usb_osal_freertos.c | 7 | ||||
| -rw-r--r-- | osal/usb_osal_rtthread.c | 5 | ||||
| -rw-r--r-- | osal/usb_osal_yoc.c | 5 |
4 files changed, 20 insertions, 1 deletions
diff --git a/osal/usb_osal.h b/osal/usb_osal.h index 7f723559..af65186a 100644 --- a/osal/usb_osal.h +++ b/osal/usb_osal.h @@ -15,7 +15,11 @@ typedef void *usb_osal_mutex_t; typedef void *usb_osal_mq_t; typedef void (*usb_thread_entry_t)(void *argument); +/* + * Task with smaller priority value indicates higher task priority +*/ usb_osal_thread_t usb_osal_thread_create(const char *name, uint32_t stack_size, uint32_t prio, usb_thread_entry_t entry, void *args); +void usb_osal_thread_delete(usb_osal_thread_t thread); usb_osal_sem_t usb_osal_sem_create(uint32_t initial_count); void usb_osal_sem_delete(usb_osal_sem_t sem); diff --git a/osal/usb_osal_freertos.c b/osal/usb_osal_freertos.c index da8ccd60..de448d2d 100644 --- a/osal/usb_osal_freertos.c +++ b/osal/usb_osal_freertos.c @@ -14,10 +14,15 @@ usb_osal_thread_t usb_osal_thread_create(const char *name, uint32_t stack_size, { TaskHandle_t htask = NULL; stack_size /= sizeof(StackType_t); - xTaskCreate(entry, name, stack_size, args, prio, &htask); + xTaskCreate(entry, name, stack_size, args, configMAX_PRIORITIES - 1 - prio, &htask); return (usb_osal_thread_t)htask; } +void usb_osal_thread_delete(usb_osal_thread_t thread) +{ + vTaskDelete(thread); +} + usb_osal_sem_t usb_osal_sem_create(uint32_t initial_count) { return (usb_osal_sem_t)xSemaphoreCreateCounting(1, initial_count); diff --git a/osal/usb_osal_rtthread.c b/osal/usb_osal_rtthread.c index e1c90499..1882830d 100644 --- a/osal/usb_osal_rtthread.c +++ b/osal/usb_osal_rtthread.c @@ -16,6 +16,11 @@ usb_osal_thread_t usb_osal_thread_create(const char *name, uint32_t stack_size, return (usb_osal_thread_t)htask; } +void usb_osal_thread_delete(usb_osal_thread_t thread) +{ + rt_thread_delete(thread); +} + usb_osal_sem_t usb_osal_sem_create(uint32_t initial_count) { return (usb_osal_sem_t)rt_sem_create("usbh_sem", initial_count, RT_IPC_FLAG_FIFO); diff --git a/osal/usb_osal_yoc.c b/osal/usb_osal_yoc.c index 2f802045..962f9021 100644 --- a/osal/usb_osal_yoc.c +++ b/osal/usb_osal_yoc.c @@ -17,6 +17,11 @@ usb_osal_thread_t usb_osal_thread_create(const char *name, uint32_t stack_size, return task_handle; } +void usb_osal_thread_delete(usb_osal_thread_t thread) +{ + aos_task_exit(0); +} + usb_osal_sem_t usb_osal_sem_create(uint32_t initial_count) { aos_sem_t sem = NULL; |
