From 271d59feaee8770a54a77967417d58ccca163060 Mon Sep 17 00:00:00 2001 From: Justus Winter <4winter@informatik.uni-hamburg.de> Date: Fri, 10 Jul 2015 11:09:09 +0200 Subject: YYY kern: implement queue_replace * kern/queue.h (queue_replace): New macro. --- kern/queue.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/kern/queue.h b/kern/queue.h index f0b4002..0080e78 100644 --- a/kern/queue.h +++ b/kern/queue.h @@ -320,6 +320,21 @@ void insque(queue_entry_t, queue_entry_t); (head)->prev = prev; \ } +/* + * Macro: queue_replace + */ +#define queue_replace(head, to, from, type, field) \ + { \ + if ((head) == (from)->field.prev) \ + (head)->next = (to); \ + else \ + ((type)((from)->field.prev))->field.next = (to); \ + if ((head) == (from)->field.next) \ + (head)->prev = (to); \ + else \ + ((type)((from)->field.next))->field.prev = (to); \ +} + /* * Macro: queue_assign */ -- cgit v1.2.3