diff --git a/cores/arduino/threads.cpp b/cores/arduino/threads.cpp index f34a7f6d9..5a4e7a9b7 100644 --- a/cores/arduino/threads.cpp +++ b/cores/arduino/threads.cpp @@ -19,15 +19,5 @@ void start_static_threads() { k_thread_name_set(thread_data->init_thread, thread_data->init_name); thread_data->init_thread->init_data = thread_data; } - - /* - * Take a sched lock to prevent them from running - * until they are all started. - */ - k_sched_lock(); - _FOREACH_STATIC_THREAD(thread_data) { - k_thread_start(thread_data->init_thread); - } - k_sched_unlock(); } #endif diff --git a/variants/_ldscripts/build-dynamic.ld b/variants/_ldscripts/build-dynamic.ld index 47d353655..c5e8dc41e 100644 --- a/variants/_ldscripts/build-dynamic.ld +++ b/variants/_ldscripts/build-dynamic.ld @@ -34,9 +34,11 @@ SECTIONS { KEEP (*(.ctors)) KEEP (*(.dtors)) KEEP (*(.fini)) + } + .static_thread_data_area : { __static_thread_data_list_start = .; - KEEP(*(SORT_BY_NAME(.__static_thread_data.static.*))); + KEEP(*(.static_thread_data_area SORT_BY_NAME(.__static_thread_data.*))); __static_thread_data_list_end = .; } @@ -87,4 +89,4 @@ SECTIONS { .got : { KEEP(*(.got .got.* .got.plt .got.plt*)) } -} \ No newline at end of file +} diff --git a/variants/_ldscripts/build-static.ld b/variants/_ldscripts/build-static.ld index 7154ee9a4..3ed10654c 100644 --- a/variants/_ldscripts/build-static.ld +++ b/variants/_ldscripts/build-static.ld @@ -23,9 +23,11 @@ SECTIONS { KEEP (*(.ctors)) KEEP (*(.dtors)) KEEP (*(.fini)) + } >FLASH + .static_thread_data_area : { __static_thread_data_list_start = .; - KEEP(*(SORT_BY_NAME(.__static_thread_data.static.*))); + KEEP(*(.static_thread_data_area SORT_BY_NAME(.__static_thread_data.*))); __static_thread_data_list_end = .; } >FLASH