mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-12-29 16:31:18 +01:00
core/priority_queue: add dynamic initializers
- priority_queue_init - priority_queue_node_init
This commit is contained in:
parent
c2b2e4554b
commit
1efdf99dfe
@ -43,11 +43,40 @@ typedef struct queue {
|
||||
*/
|
||||
#define PRIORITY_QUEUE_NODE_INIT { NULL, 0, 0 }
|
||||
|
||||
/**
|
||||
* @brief Initialize a priority queue node object.
|
||||
* @details For initialization of variables use PRIORITY_QUEUE_NODE_INIT
|
||||
* instead. Only use this function for dynamically allocated
|
||||
* priority queue nodes.
|
||||
* @param[out] priority_queue_node
|
||||
* pre-allocated priority_queue_node_t object, must not be NULL.
|
||||
*/
|
||||
static inline void priority_queue_node_init(
|
||||
priority_queue_node_t *priority_queue_node)
|
||||
{
|
||||
priority_queue_node_t qn = PRIORITY_QUEUE_NODE_INIT;
|
||||
*priority_queue_node = qn;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Static initializer for priority_queue_t.
|
||||
*/
|
||||
#define PRIORITY_QUEUE_INIT { NULL }
|
||||
|
||||
/**
|
||||
* @brief Initialize a priority queue object.
|
||||
* @details For initialization of variables use PRIORITY_QUEUE_INIT
|
||||
* instead. Only use this function for dynamically allocated
|
||||
* priority queues.
|
||||
* @param[out] priority_queue
|
||||
* pre-allocated priority_queue_t object, must not be NULL.
|
||||
*/
|
||||
static inline void priority_queue_init(priority_queue_t *priority_queue)
|
||||
{
|
||||
priority_queue_t q = PRIORITY_QUEUE_INIT;
|
||||
*priority_queue = q;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief remove the priority queue's head
|
||||
*
|
||||
|
||||
@ -49,8 +49,8 @@ static int vtimer_set(vtimer_t *timer);
|
||||
static int set_longterm(vtimer_t *timer);
|
||||
static int set_shortterm(vtimer_t *timer);
|
||||
|
||||
static priority_queue_t longterm_priority_queue_root;
|
||||
static priority_queue_t shortterm_priority_queue_root;
|
||||
static priority_queue_t longterm_priority_queue_root = PRIORITY_QUEUE_INIT;
|
||||
static priority_queue_t shortterm_priority_queue_root = PRIORITY_QUEUE_INIT;
|
||||
|
||||
static vtimer_t longterm_tick_timer;
|
||||
static uint32_t longterm_tick_start;
|
||||
|
||||
@ -15,13 +15,15 @@
|
||||
|
||||
#define Q_LEN (4)
|
||||
|
||||
static priority_queue_t q;
|
||||
static priority_queue_t q = PRIORITY_QUEUE_INIT;
|
||||
static priority_queue_node_t qe[Q_LEN];
|
||||
|
||||
static void set_up(void)
|
||||
{
|
||||
q.first = NULL;
|
||||
memset(qe, 0, sizeof(qe));
|
||||
priority_queue_init(&q);
|
||||
for (unsigned i = 0; i < sizeof(qe)/sizeof(priority_queue_node_t); ++i) {
|
||||
priority_queue_node_init(&(qe[i]));
|
||||
}
|
||||
}
|
||||
|
||||
static void test_priority_queue_remove_head_empty(void)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user