13#if defined(OS_USE_OS_APP_CONFIG_H)
14#include <cmsis-plus/os-app-config.h>
22#pragma clang diagnostic ignored "-Wc++98-compat"
68 while (!scheduler::terminated_threads_list_.empty ())
79 node->
thread_->internal_destroy_ ();
84#if defined(OS_HAS_INTERRUPTS_STACK)
92 port::scheduler::wait_for_interrupt ();
96#if !defined(OS_USE_RTOS_PORT_SCHEDULER) || defined(__DOXYGEN__)
101extern thread* os_idle_thread;
105#pragma GCC diagnostic push
106#if defined(__clang__)
107#pragma clang diagnostic ignored "-Wexit-time-destructors"
108#pragma clang diagnostic ignored "-Wglobal-constructors"
109#pragma clang diagnostic ignored "-Wmissing-variable-declarations"
112#if defined(OS_EXCLUDE_DYNAMIC_MEMORY_ALLOCATIONS)
119static std::unique_ptr<thread> os_idle_thread_;
123#pragma GCC diagnostic pop
129#if defined(OS_EXCLUDE_DYNAMIC_MEMORY_ALLOCATIONS)
132 os_idle_thread = &os_idle_thread_;
140 os_idle_thread_ = std::unique_ptr<thread> (
143 os_idle_thread = os_idle_thread_.get ();
155#if defined(OS_BOOL_RTOS_THREAD_IDLE_PRIORITY_BELOW_IDLE)
Double linked list node, with thread reference.
rtos::thread * thread_
Pointer to waiting thread.
Interrupts critical section RAII helper.
std::size_t th_stack_size_bytes
Size of the user defined storage for the thread stack, in bytes.
Template of a POSIX compliant thread with local stack.
_func_args_t func_args_t
Type of thread function arguments.
void unlink(void)
Remove the node from the list.
#define OS_INTEGER_RTOS_IDLE_STACK_SIZE_BYTES
Define the idle thread stack size.
void os_startup_create_thread_idle(void)
Create the idle thread.
bool os_rtos_idle_enter_power_saving_mode_hook(void)
Hook to enter a power saving mode.
class thread::stack * stack(void)
Get the interrupts stack.
void yield() noexcept
Yield the CPU to the next ready thread.
void os_rtos_idle_actions(void)
void * os_idle(thread::func_args_t args)
Single file µOS++ RTOS definitions.