core/priority_queue: add dynamic initializers

- priority_queue_init
- priority_queue_node_init
dev/timer
Ludwig Ortmann 9 years ago
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…
Cancel
Save