summaryrefslogtreecommitdiff
path: root/osal
diff options
context:
space:
mode:
authorsakimisu <[email protected]>2023-07-05 22:39:47 +0800
committersakimisu <[email protected]>2023-07-05 22:53:13 +0800
commit7574063e9481e245e604f094986c016a1c87638c (patch)
tree1030b0c1eb8cfc41ea0f6fa7d5618350823b5604 /osal
parent0d916af297d1e591bf2d9a93ffbaa22c93df87af (diff)
enum device with disposable thread, do not block hub thread
Diffstat (limited to 'osal')
-rw-r--r--osal/usb_osal.h4
-rw-r--r--osal/usb_osal_freertos.c7
-rw-r--r--osal/usb_osal_rtthread.c5
-rw-r--r--osal/usb_osal_yoc.c5
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;