13#ifndef CMSIS_PLUS_RTOS_INTERNAL_OS_LISTS_H_
14#define CMSIS_PLUS_RTOS_INTERNAL_OS_LISTS_H_
31#pragma GCC diagnostic push
33#pragma clang diagnostic ignored "-Wc++98-compat"
34#pragma clang diagnostic ignored "-Wdocumentation-unknown-command"
49#pragma GCC diagnostic push
51#pragma clang diagnostic ignored "-Wpadded"
52#elif defined(__GNUC__)
53#pragma GCC diagnostic ignored "-Wpadded"
115#pragma GCC diagnostic pop
119#pragma GCC diagnostic push
120#if defined(__clang__)
121#pragma clang diagnostic ignored "-Wpadded"
122#elif defined(__GNUC__)
123#pragma GCC diagnostic ignored "-Wpadded"
208#pragma GCC diagnostic pop
212#pragma GCC diagnostic push
213#if defined(__clang__)
214#pragma clang diagnostic ignored "-Wpadded"
215#elif defined(__GNUC__)
216#pragma GCC diagnostic ignored "-Wpadded"
301#pragma GCC diagnostic pop
305#pragma GCC diagnostic push
306#if defined(__clang__)
307#pragma clang diagnostic ignored "-Wpadded"
308#elif defined(__GNUC__)
309#pragma GCC diagnostic ignored "-Wpadded"
392#pragma GCC diagnostic pop
943#pragma GCC diagnostic push
944#if defined(__clang__)
945#elif defined(__GNUC__)
946#pragma GCC diagnostic ignored "-Waggregate-return"
963#pragma GCC diagnostic pop
980 return static_cast<volatile timestamp_node*
> (double_list::head ());
1010#pragma GCC diagnostic pop
Ordered list of time stamp nodes.
void check_timestamp(port::clock::timestamp_t now)
Check list time stamps.
volatile timestamp_node * head(void) const
Get list head.
void link(timestamp_node &node)
Add a new thread node to the list.
clock_timestamps_list()
Construct a list of clock time stamps.
~clock_timestamps_list()
Destruct the list.
Priority ordered list of threads waiting too run.
ready_threads_list()
Construct a list of waiting threads.
~ready_threads_list()
Destruct the list.
thread * unlink_head(void)
Remove the top node from the list.
volatile waiting_thread_node * head(void) const
Get list head.
void link(waiting_thread_node &node)
Add a new thread node to the list.
Unordered list of threads.
terminated_threads_list()
Construct a list of waiting threads.
volatile waiting_thread_node * head(void) const
Get list head.
void link(waiting_thread_node &node)
Add a new thread node to the list.
~terminated_threads_list()
Destruct the list.
List of children threads.
~thread_children_list()
Destruct the list.
thread_children_list()
Construct a list of waiting threads.
void link(thread &thread)
Add a new thread node to the list.
Double linked list node, with time stamp and thread.
rtos::thread & thread
Reference to thread who initiated the timeout.
virtual ~timeout_thread_node() override
Destruct the node.
virtual void action(void) override
Action to perform when the time stamp is reached.
Double linked list node, with time stamp and timer.
timer & tmr
Reference to waiting timer.
virtual void action(void) override
Action to perform when the time stamp is reached.
virtual ~timer_node() override
Destruct the node.
Double linked list node, with time stamp.
virtual void action(void)=0
Action to perform when the time stamp is reached.
port::clock::timestamp_t timestamp
Time stamp when the next action will be performed.
virtual ~timestamp_node()
Destruct the node.
Double linked list node, with thread reference.
rtos::thread * thread_
Pointer to waiting thread.
~waiting_thread_node()
Destruct the node.
waiting_thread_node(thread &th)
Construct a node with references to the thread.
Priority ordered list of threads.
void link(waiting_thread_node &node)
Add a new thread node to the list.
bool resume_one(void)
Wake-up one thread (the oldest with the highest priority)
iterator end() const
Iterator begin.
waiting_threads_list()
Construct a list of waiting threads.
volatile waiting_thread_node * head(void) const
Get list head.
void resume_all(void)
Wake-up all threads in the list.
iterator begin() const
Iterator begin.
~waiting_threads_list()
Destruct the list.
POSIX compliant thread, using the default RTOS allocator.
User single-shot or periodic timer.
Template for a double linked list iterator.
N * iterator_pointer
Type of reference to the iterator internal pointer.
The core of a double linked list, pointers to next, previous.
Circular double linked list of nodes.
Statically allocated core of a double linked list, pointers to next, previous.
static_double_list_links * next(void) const
Statically allocated circular double linked list of nodes.
static_double_list_links head_
A list node used to point to head and tail.
uint64_t timestamp_t
Type of variables holding time stamps.