33#pragma clang diagnostic ignored "-Wc++98-compat"
78 while (!scheduler::terminated_threads_list_.empty ())
89 node->
thread_->internal_destroy_ ();
94#if defined(OS_HAS_INTERRUPTS_STACK)
102 port::scheduler::wait_for_interrupt ();
106#if !defined(OS_USE_RTOS_PORT_SCHEDULER) || defined(__DOXYGEN__)
111extern thread* os_idle_thread;
115#pragma GCC diagnostic push
116#if defined(__clang__)
117#pragma clang diagnostic ignored "-Wexit-time-destructors"
118#pragma clang diagnostic ignored "-Wglobal-constructors"
119#pragma clang diagnostic ignored "-Wmissing-variable-declarations"
122#if defined(OS_EXCLUDE_DYNAMIC_MEMORY_ALLOCATIONS)
129static std::unique_ptr<thread> os_idle_thread_;
133#pragma GCC diagnostic pop
139#if defined(OS_EXCLUDE_DYNAMIC_MEMORY_ALLOCATIONS)
142 os_idle_thread = &os_idle_thread_;
150 os_idle_thread_ = std::unique_ptr<thread> (
153 os_idle_thread = os_idle_thread_.get ();
165#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.