From 32575ed70f3210a2fe10edfd801ad1cb8f5caffa Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Wed, 10 Feb 2010 15:30:59 -0800 Subject: Temporary changes to dlinklist to keep the implementation static whilst uses of (list)->prev are moved over to DLIST_PREV. This will be replaced when the final (new) version of the dlinklist.h header is added. Jeremy. --- lib/util/dlinklist.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'lib/util/dlinklist.h') diff --git a/lib/util/dlinklist.h b/lib/util/dlinklist.h index 693b43dd27..c1f01e616a 100644 --- a/lib/util/dlinklist.h +++ b/lib/util/dlinklist.h @@ -51,6 +51,22 @@ do { \ if ((p) != (list)) (p)->next = (p)->prev = NULL; \ } while (0) +#define DLIST_HEAD(p, result_head) \ +do { \ + (result_head) = (p); \ + while (DLIST_PREV(result_head)) (result_head) = (result_head)->prev; \ +} while(0) + +/* return the last element in the list */ +#define DLIST_TAIL(list, result_tail) \ +do { \ + (result_tail) = (list); \ + while ((result_tail) && (result_tail)->next) (result_tail) = (result_tail)->next; \ +} while (0); + +/* return the previous element in the list. */ +#define DLIST_PREV(p) ((p)?(p)->prev:NULL) + /* promote an element to the top of the list */ #define DLIST_PROMOTE(list, p) \ do { \ -- cgit