File tree Expand file tree Collapse file tree 8 files changed +34
-25
lines changed Expand file tree Collapse file tree 8 files changed +34
-25
lines changed Original file line number Diff line number Diff line change 1010#include "esp_log.h"
1111#include "freertos/FreeRTOS.h"
1212#include "freertos/task.h"
13+ #include "esp_private/critical_section.h"
1314#include "tusb.h"
1415#include "tinyusb_cdc_acm.h"
1516#include "cdc.h"
2425#endif
2526
2627// CDC-ACM spinlock
27- static portMUX_TYPE cdc_acm_lock = portMUX_INITIALIZER_UNLOCKED ;
28- #define CDC_ACM_ENTER_CRITICAL () portENTER_CRITICAL (&cdc_acm_lock)
29- #define CDC_ACM_EXIT_CRITICAL () portEXIT_CRITICAL (&cdc_acm_lock)
28+ DEFINE_CRIT_SECTION_LOCK_STATIC ( cdc_acm_lock ) ;
29+ #define CDC_ACM_ENTER_CRITICAL () esp_os_enter_critical (&cdc_acm_lock)
30+ #define CDC_ACM_EXIT_CRITICAL () esp_os_exit_critical (&cdc_acm_lock)
3031
3132typedef struct {
3233 tusb_cdcacm_callback_t callback_rx ;
Original file line number Diff line number Diff line change 77#include "freertos/FreeRTOS.h"
88#include "freertos/task.h"
99#include "freertos/semphr.h"
10+ #include "esp_private/critical_section.h"
1011#include "soc/soc_caps.h"
1112#include "esp_log.h"
1213#include "esp_check.h"
1617
1718const static char * TAG = "tinyusb_task" ;
1819
19- static portMUX_TYPE tusb_task_lock = portMUX_INITIALIZER_UNLOCKED ;
20- #define TINYUSB_TASK_ENTER_CRITICAL () portENTER_CRITICAL (&tusb_task_lock)
21- #define TINYUSB_TASK_EXIT_CRITICAL () portEXIT_CRITICAL (&tusb_task_lock)
20+ DEFINE_CRIT_SECTION_LOCK_STATIC ( tusb_task_lock ) ;
21+ #define TINYUSB_TASK_ENTER_CRITICAL () esp_os_enter_critical (&tusb_task_lock)
22+ #define TINYUSB_TASK_EXIT_CRITICAL () esp_os_exit_critical (&tusb_task_lock)
2223
2324#define TINYUSB_TASK_CHECK (cond , ret_val ) ({ \
2425 if (!(cond)) { \
Original file line number Diff line number Diff line change 1212#include "freertos/task.h"
1313#include "freertos/semphr.h"
1414#include "freertos/event_groups.h"
15+ #include "esp_private/critical_section.h"
1516#include "soc/soc_caps.h"
1617#include "esp_log.h"
1718#include "esp_check.h"
@@ -30,9 +31,9 @@ static const char *TAG = "cdc_acm";
3031#define CDC_ACM_CTRL_TIMEOUT_MS (5000) // Every CDC device should be able to respond to CTRL transfer in 5 seconds
3132
3233// CDC-ACM spinlock
33- static portMUX_TYPE cdc_acm_lock = portMUX_INITIALIZER_UNLOCKED ;
34- #define CDC_ACM_ENTER_CRITICAL () portENTER_CRITICAL (&cdc_acm_lock)
35- #define CDC_ACM_EXIT_CRITICAL () portEXIT_CRITICAL (&cdc_acm_lock)
34+ DEFINE_CRIT_SECTION_LOCK_STATIC ( cdc_acm_lock ) ;
35+ #define CDC_ACM_ENTER_CRITICAL () esp_os_enter_critical (&cdc_acm_lock)
36+ #define CDC_ACM_EXIT_CRITICAL () esp_os_exit_critical (&cdc_acm_lock)
3637
3738// CDC-ACM events
3839#define CDC_ACM_TEARDOWN BIT0
Original file line number Diff line number Diff line change 1515#include "freertos/FreeRTOS.h"
1616#include "freertos/task.h"
1717#include "freertos/semphr.h"
18+ #include "esp_private/critical_section.h"
1819#include "usb/usb_host.h"
1920
2021#include "usb/hid_host.h"
2122
2223// HID spinlock
23- static portMUX_TYPE hid_lock = portMUX_INITIALIZER_UNLOCKED ;
24- #define HID_ENTER_CRITICAL () portENTER_CRITICAL (&hid_lock)
25- #define HID_EXIT_CRITICAL () portEXIT_CRITICAL (&hid_lock)
24+ DEFINE_CRIT_SECTION_LOCK_STATIC ( hid_lock ) ;
25+ #define HID_ENTER_CRITICAL () esp_os_enter_critical (&hid_lock)
26+ #define HID_EXIT_CRITICAL () esp_os_exit_critical (&hid_lock)
2627
2728// HID verification macros
2829#define HID_GOTO_ON_FALSE_CRITICAL (exp , err ) \
Original file line number Diff line number Diff line change 11/*
2- * SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD
2+ * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
33 *
44 * SPDX-License-Identifier: Apache-2.0
55 */
1616#include "freertos/FreeRTOS.h"
1717#include "freertos/task.h"
1818#include "freertos/semphr.h"
19+ #include "esp_private/critical_section.h"
1920#include "usb/usb_host.h"
2021#include "diskio_usb.h"
2122#include "msc_common.h"
2627#include "soc/soc_memory_layout.h"
2728
2829// MSC driver spin lock
29- static portMUX_TYPE msc_lock = portMUX_INITIALIZER_UNLOCKED ;
30- #define MSC_ENTER_CRITICAL () portENTER_CRITICAL (&msc_lock)
31- #define MSC_EXIT_CRITICAL () portEXIT_CRITICAL (&msc_lock)
30+ DEFINE_CRIT_SECTION_LOCK_STATIC ( msc_lock ) ;
31+ #define MSC_ENTER_CRITICAL () esp_os_enter_critical (&msc_lock)
32+ #define MSC_EXIT_CRITICAL () esp_os_exit_critical (&msc_lock)
3233
3334#define MSC_GOTO_ON_FALSE_CRITICAL (exp , err ) \
3435 do { \
Original file line number Diff line number Diff line change 2020#include "freertos/task.h"
2121#include "freertos/semphr.h"
2222#include "freertos/ringbuf.h"
23+ #include "esp_private/critical_section.h"
2324#include "usb/usb_host.h"
2425#include "usb/uac_host.h"
2526#include "usb/usb_types_ch9.h"
2627
2728// UAC spinlock
28- static portMUX_TYPE uac_lock = portMUX_INITIALIZER_UNLOCKED ;
29- #define UAC_ENTER_CRITICAL () portENTER_CRITICAL (&uac_lock)
30- #define UAC_EXIT_CRITICAL () portEXIT_CRITICAL (&uac_lock)
29+ DEFINE_CRIT_SECTION_LOCK_STATIC ( uac_lock ) ;
30+ #define UAC_ENTER_CRITICAL () esp_os_enter_critical (&uac_lock)
31+ #define UAC_EXIT_CRITICAL () esp_os_exit_critical (&uac_lock)
3132
3233// UAC verification macros
3334#define UAC_GOTO_ON_FALSE_CRITICAL (exp , err ) \
Original file line number Diff line number Diff line change 11/*
2- * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
2+ * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD
33 *
44 * SPDX-License-Identifier: Apache-2.0
55 */
99#include <stdatomic.h>
1010
1111#include "freertos/FreeRTOS.h"
12- #include "freertos/portmacro .h"
12+ #include "esp_private/critical_section .h"
1313
14- extern portMUX_TYPE uvc_lock ;
15- #define UVC_ENTER_CRITICAL () portENTER_CRITICAL(&uvc_lock)
16- #define UVC_EXIT_CRITICAL () portEXIT_CRITICAL(&uvc_lock)
14+ // TODO: Nice to have dedicated critical section macro for declaring extern lock, eg: DECLARE_EXT_CRIT_SECTION_LOCK
15+ extern DECLARE_CRIT_SECTION_LOCK_IN_STRUCT (uvc_lock );
16+
17+ #define UVC_ENTER_CRITICAL () esp_os_enter_critical(&uvc_lock)
18+ #define UVC_EXIT_CRITICAL () esp_os_exit_critical(&uvc_lock)
1719
1820#define UVC_ATOMIC_LOAD (x ) __atomic_load_n(&x, __ATOMIC_SEQ_CST)
1921#define UVC_ATOMIC_SET_IF_NULL (x , new_x ) ({ \
Original file line number Diff line number Diff line change 3131#include "freertos/semphr.h"
3232#include "freertos/queue.h"
3333#include "freertos/event_groups.h"
34+ #include "esp_private/critical_section.h"
3435
3536static const char * TAG = "uvc" ;
3637
3738// UVC spinlock
38- portMUX_TYPE uvc_lock = portMUX_INITIALIZER_UNLOCKED ;
39+ DEFINE_CRIT_SECTION_LOCK ( uvc_lock ) ;
3940
4041// UVC driver status
4142#define UVC_STARTED BIT0 // UVC driver events handling started
You can’t perform that action at this time.
0 commit comments