From 4becea724ccd87e88f8454622ae227308b5fa3ce Mon Sep 17 00:00:00 2001 From: Christian Franke Date: Tue, 19 Nov 2013 14:11:42 +0000 Subject: lib: use heap to manage timers Signed-off-by: Christian Franke Signed-off-by: David Lamparter --- lib/pqueue.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'lib/pqueue.c') diff --git a/lib/pqueue.c b/lib/pqueue.c index 12a779f2..69ab8e65 100644 --- a/lib/pqueue.c +++ b/lib/pqueue.c @@ -168,3 +168,20 @@ pqueue_dequeue (struct pqueue *queue) trickle_down (0, queue); return data; } + +void +pqueue_remove_at (int index, struct pqueue *queue) +{ + queue->array[index] = queue->array[--queue->size]; + + if (index > 0 + && (*queue->cmp) (queue->array[index], + queue->array[PARENT_OF(index)]) < 0) + { + trickle_up (index, queue); + } + else + { + trickle_down (index, queue); + } +} -- cgit v1.2.3