Go to the documentation of this file.
117 #define __CH_QUEUE_DATA(name) {(ch_queue_t *)&name, (ch_queue_t *)&name}
126 #define CH_QUEUE_DECL(name) \
127 ch_queue_t name = __CH_QUEUE_DATA(name)
168 return (
bool)(lp->
next == lp);
181 return (
bool)(lp->
next != lp);
238 return (
bool)(qp->
next == qp);
251 return (
bool)(qp->
next != qp);
443 return (
bool)(dlhp == dlhp->
next);
456 return (
bool)(dlhp != dlhp->
next);
470 return (
bool)(dlp->
next == dlhp);
484 return (
bool)(dlhp->
next == dlp);
546 chDbgAssert(dlp != dlep,
"element already in list");
ch_queue_t * next
Next in the list/queue.
#define chDbgAssert(c, r)
Condition assertion.
ch_list_t * next
Next in the list/queue.
static bool ch_dlist_islast(ch_delta_list_t *dlhp, ch_delta_list_t *dlp)
Last element in the delta list check.
static void ch_queue_insert(ch_queue_t *qp, ch_queue_t *p)
Inserts an element into a queue.
static bool ch_queue_notempty(const ch_queue_t *qp)
Evaluates to true if the specified queue is not empty.
static bool ch_queue_isempty(const ch_queue_t *qp)
Evaluates to true if the specified queue is empty.
static ch_list_t * ch_list_unlink(ch_list_t *lp)
Pops an element from the top of a stack list and returns it.
static bool ch_dlist_isempty(ch_delta_list_t *dlhp)
Evaluates to true if the specified delta list is empty.
static void ch_dlist_insert_before(ch_delta_list_t *dlhp, ch_delta_list_t *dlp, sysinterval_t delta)
Inserts an element before another header element.
static ch_delta_list_t * ch_dlist_dequeue(ch_delta_list_t *dlp)
Dequeues an element from the delta list.
static void ch_dlist_insert_after(ch_delta_list_t *dlhp, ch_delta_list_t *dlp, sysinterval_t delta)
Inserts an element after another header element.
#define likely(x)
Marks a boolean expression as likely true.
static bool ch_list_notempty(ch_list_t *lp)
Evaluates to true if the specified list is not empty.
static ch_priority_queue_t * ch_pqueue_insert_ahead(ch_priority_queue_t *pqp, ch_priority_queue_t *p)
Inserts an element in the priority queue placing it ahead of its peers.
sysinterval_t delta
Time interval from previous.
static ch_queue_t * ch_queue_fifo_remove(ch_queue_t *qp)
Removes the first-out element from a queue and returns it.
ch_delta_list_t * next
Next in the delta list.
static ch_priority_queue_t * ch_pqueue_remove_highest(ch_priority_queue_t *pqp)
Removes the highest priority element from a priority queue and returns it.
static ch_priority_queue_t * ch_pqueue_insert_behind(ch_priority_queue_t *pqp, ch_priority_queue_t *p)
Inserts an element in the priority queue placing it behind its peers.
Structure representing a generic bidirectional linked list header and element.
static bool ch_dlist_isfirst(ch_delta_list_t *dlhp, ch_delta_list_t *dlp)
Fist element in the delta list check.
static void ch_queue_init(ch_queue_t *qp)
Queue initialization.
static ch_queue_t * ch_queue_lifo_remove(ch_queue_t *qp)
Removes the last-out element from a queue and returns it.
static bool ch_list_isempty(ch_list_t *lp)
Evaluates to true if the specified list is empty.
static bool ch_dlist_notempty(ch_delta_list_t *dlhp)
Evaluates to true if the specified queue is not empty.
uint64_t sysinterval_t
Type of time interval.
static void ch_pqueue_init(ch_priority_queue_t *pqp)
Priority queue initialization.
ch_priority_queue_t * next
Next in the queue.
static void ch_list_link(ch_list_t *lp, ch_list_t *p)
Pushes an element on top of a stack list.
ch_queue_t * prev
Previous in the queue.
#define unlikely(x)
Marks a boolean expression as likely false.
ch_delta_list_t * prev
Previous in the delta list.
ch_priority_queue_t * prev
Previous in the queue.
static void ch_dlist_insert(ch_delta_list_t *dlhp, ch_delta_list_t *dlep, sysinterval_t delta)
Inserts an element in a delta list.
static ch_queue_t * ch_queue_dequeue(ch_queue_t *p)
Removes an element from a queue and returns it.
tprio_t prio
Priority of this element.
static ch_delta_list_t * ch_dlist_remove_first(ch_delta_list_t *dlhp)
Dequeues an element from the delta list.
Structure representing a generic single link list header and element.
Structure representing a generic priority-ordered bidirectional linked list header and element.
Delta list element and header structure.
static void ch_dlist_init(ch_delta_list_t *dlhp)
Delta list initialization.
static void ch_list_init(ch_list_t *lp)
List initialization.