• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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