circuitpython/tests/thread
Angus Gratton 5d8878b582 shared/tinyusb: Only run TinyUSB on the main thread if GIL is disabled.
If GIL is disabled then there's threat of a race condition if some other
code specifically requests USB processing (i.e. to unblock stdio), while
a scheduled TinyUSB callback is already running on another thread.

Relies on the change in the parent commit, where scheduler is restricted
to main thread if GIL is disabled.

Fixes #15390 - "TinyUSB callback can't recurse" exceptions on rp2 when
using _thread module and USB serial I/O.

Adds a unit test for stdin functioning correctly in threads (fails on rp2
port without this fix).

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2024-09-19 13:17:01 +10:00
..
disable_irq.py rp2: Fix recursive atomic sections when core1 is active. 2024-06-25 11:01:25 +10:00
disable_irq.py.exp rp2: Fix recursive atomic sections when core1 is active. 2024-06-25 11:01:25 +10:00
mutate_bytearray.py top: Update Python formatting to black "2023 stable style". 2023-02-02 12:51:03 +11:00
mutate_dict.py top: Update Python formatting to black "2023 stable style". 2023-02-02 12:51:03 +11:00
mutate_instance.py top: Update Python formatting to black "2023 stable style". 2023-02-02 12:51:03 +11:00
mutate_list.py top: Update Python formatting to black "2023 stable style". 2023-02-02 12:51:03 +11:00
mutate_set.py top: Update Python formatting to black "2023 stable style". 2023-02-02 12:51:03 +11:00
stress_aes.py tests/thread: Adapt stress_aes.py to run on zephyr. 2024-09-06 20:42:57 +10:00
stress_create.py tests: Replace umodule with module everywhere. 2023-06-08 17:54:24 +10:00
stress_heap.py tests: Replace umodule with module everywhere. 2023-06-08 17:54:24 +10:00
stress_recurse.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
stress_schedule.py tests/thread: Re-enable GC before stress_schedule test ends. 2024-06-21 14:45:59 +10:00
stress_schedule.py.exp py/scheduler: Add assert that scheduler is locked when unlocking. 2020-04-13 21:55:47 +10:00
thread_coop.py esp32/mpthreadport: Fix uneven GIL allocation between Python threads. 2024-07-23 12:33:19 +10:00
thread_coop.py.exp esp32/mpthreadport: Fix uneven GIL allocation between Python threads. 2024-07-23 12:33:19 +10:00
thread_exc1.py tests/thread: Make exc1,exit1,exit2,stacksize1,start1 tests run on rp2. 2021-05-10 13:07:16 +10:00
thread_exc2.py tests: Replace umodule with module everywhere. 2023-06-08 17:54:24 +10:00
thread_exc2.py.exp tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
thread_exit1.py tests: Replace umodule with module everywhere. 2023-06-08 17:54:24 +10:00
thread_exit2.py tests: Replace umodule with module everywhere. 2023-06-08 17:54:24 +10:00
thread_gc1.py tests/thread: Adjust thread tests so most are able to run on rp2 port. 2024-01-05 10:02:27 +11:00
thread_heap_lock.py py/gc: Make gc_lock_depth have a count per thread. 2021-05-10 13:07:16 +10:00
thread_heap_lock.py.exp py/gc: Make gc_lock_depth have a count per thread. 2021-05-10 13:07:16 +10:00
thread_ident1.py tests/thread: Adjust thread tests so most are able to run on rp2 port. 2024-01-05 10:02:27 +11:00
thread_lock1.py all: Fix spelling mistakes based on codespell check. 2023-04-27 18:03:06 +10:00
thread_lock2.py tests: Replace umodule with module everywhere. 2023-06-08 17:54:24 +10:00
thread_lock3.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
thread_lock4.py tests/thread: Adjust thread tests so most are able to run on rp2 port. 2024-01-05 10:02:27 +11:00
thread_lock5.py esp32/mpthreadport: Use binary semaphore instead of mutex. 2021-05-08 22:47:03 +10:00
thread_qstr1.py tests/thread: Adjust thread tests so most are able to run on rp2 port. 2024-01-05 10:02:27 +11:00
thread_shared1.py tests/thread: Adjust thread tests so most are able to run on rp2 port. 2024-01-05 10:02:27 +11:00
thread_shared2.py tests: Format all Python code with black, except tests in basics subdir. 2020-03-30 13:21:58 +11:00
thread_sleep1.py tests/thread: Adjust thread tests so most are able to run on rp2 port. 2024-01-05 10:02:27 +11:00
thread_sleep2.py tests/thread: Add a test for accuracy of sleep within a thread. 2024-01-05 10:35:34 +11:00
thread_stacksize1.py tests: Replace umodule with module everywhere. 2023-06-08 17:54:24 +10:00
thread_start1.py tests: Replace umodule with module everywhere. 2023-06-08 17:54:24 +10:00
thread_start2.py tests: Replace umodule with module everywhere. 2023-06-08 17:54:24 +10:00
thread_stdin.py shared/tinyusb: Only run TinyUSB on the main thread if GIL is disabled. 2024-09-19 13:17:01 +10:00