15#if defined(MICRO_OS_PLUS_INCLUDE_CONFIG_H)
16#include <micro-os-plus/config.h>
20#include <micro-os-plus/diag/trace.h>
25#pragma GCC diagnostic push
27#pragma GCC diagnostic ignored "-Waggregate-return"
29#pragma clang diagnostic ignored "-Wc++98-compat"
51 assert (
next_ ==
nullptr);
91#if defined(MICRO_OS_PLUS_TRACE_UTILS_LISTS)
92 trace::printf (
"%s() link %p after %p\n", __func__, node,
this);
94 assert (
next_ !=
nullptr);
115#if defined(MICRO_OS_PLUS_TRACE_UTILS_LISTS)
116 trace::printf (
"%s() link %p before %p\n", __func__, node,
this);
118 assert (
next_ !=
nullptr);
140#if defined(MICRO_OS_PLUS_TRACE_UTILS_LISTS)
141 trace::printf (
"%s() %p \n", __func__,
this);
165 assert (
next_ ==
this);
178#if defined(__GNUC__) && !defined(__clang__)
181 __attribute__ ((noinline, noipa))
194#pragma GCC diagnostic pop
A base class for a double linked list.
double_list_links_base * previous_
Pointer to the previous node.
void initialize_once(void)
Initialize the list only at first run.
void link_next(double_list_links_base *node)
Link the new node as next.
bool linked(void) const
Check if the node is linked to a double list.
void link_previous(double_list_links_base *node)
Link the new node as previous.
bool uninitialized(void) const
Check if the node is uninitialised.
double_list_links_base * next_
Pointer to the next node.
constexpr void initialize(void)
Initialise the node links.
void unlink(void)
Remove this node from the list.
void nullify(void)
Reset the two pointers to nullptr.
µOS++ utility definitions.