1 /* 2 * Copyright (c) 2022, sakumisu 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 #ifndef USB_OSAL_H 7 #define USB_OSAL_H 8 9 #include <stdint.h> 10 #include <string.h> 11 12 #define USB_OSAL_WAITING_FOREVER (0xFFFFFFFFU) 13 14 typedef void *usb_osal_thread_t; 15 typedef void *usb_osal_sem_t; 16 typedef void *usb_osal_mutex_t; 17 typedef void *usb_osal_mq_t; 18 typedef void (*usb_thread_entry_t)(void *argument); 19 20 /* 21 * Task with smaller priority value indicates higher task priority 22 */ 23 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); 24 void usb_osal_thread_delete(usb_osal_thread_t thread); 25 26 usb_osal_sem_t usb_osal_sem_create(uint32_t initial_count); 27 void usb_osal_sem_delete(usb_osal_sem_t sem); 28 int usb_osal_sem_take(usb_osal_sem_t sem, uint32_t timeout); 29 int usb_osal_sem_give(usb_osal_sem_t sem); 30 31 usb_osal_mutex_t usb_osal_mutex_create(void); 32 void usb_osal_mutex_delete(usb_osal_mutex_t mutex); 33 int usb_osal_mutex_take(usb_osal_mutex_t mutex); 34 int usb_osal_mutex_give(usb_osal_mutex_t mutex); 35 36 usb_osal_mq_t usb_osal_mq_create(uint32_t max_msgs); 37 int usb_osal_mq_send(usb_osal_mq_t mq, uintptr_t addr); 38 int usb_osal_mq_recv(usb_osal_mq_t mq, uintptr_t *addr, uint32_t timeout); 39 40 size_t usb_osal_enter_critical_section(void); 41 void usb_osal_leave_critical_section(size_t flag); 42 43 void usb_osal_msleep(uint32_t delay); 44 45 #endif /* USB_OSAL_H */ 46