Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/sys Add a CIRCLEQ_END() macro to reduce diff with other ...



details:   https://anonhg.NetBSD.org/src/rev/f1a9d0f0e792
branches:  trunk
changeset: 791503:f1a9d0f0e792
user:      christos <christos%NetBSD.org@localhost>
date:      Thu Nov 21 15:54:17 2013 +0000

description:
Add a CIRCLEQ_END() macro to reduce diff with other queue.h

diffstat:

 sys/sys/queue.h |  48 +++++++++++++++++++++++++-----------------------
 1 files changed, 25 insertions(+), 23 deletions(-)

diffs (153 lines):

diff -r 463a0638f78c -r f1a9d0f0e792 sys/sys/queue.h
--- a/sys/sys/queue.h   Thu Nov 21 15:40:17 2013 +0000
+++ b/sys/sys/queue.h   Thu Nov 21 15:54:17 2013 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: queue.h,v 1.55 2013/07/17 15:50:59 pooka Exp $ */
+/*     $NetBSD: queue.h,v 1.56 2013/11/21 15:54:17 christos Exp $      */
 
 /*
  * Copyright (c) 1991, 1993
@@ -604,16 +604,16 @@
  */
 #if defined(_KERNEL) && defined(QUEUEDEBUG)
 #define QUEUEDEBUG_CIRCLEQ_HEAD(head, field)                           \
-       if ((head)->cqh_first != (void *)(head) &&                      \
-           (head)->cqh_first->field.cqe_prev != (void *)(head))        \
+       if ((head)->cqh_first != CIRCLEQ_END(head) &&                   \
+           (head)->cqh_first->field.cqe_prev != CIRCLEQ_END(head))     \
                panic("CIRCLEQ head forw %p %s:%d", (head),             \
                      __FILE__, __LINE__);                              \
-       if ((head)->cqh_last != (void *)(head) &&                       \
-           (head)->cqh_last->field.cqe_next != (void *)(head))         \
+       if ((head)->cqh_last != CIRCLEQ_END(head) &&                    \
+           (head)->cqh_last->field.cqe_next != CIRCLEQ_END(head))              \
                panic("CIRCLEQ head back %p %s:%d", (head),             \
                      __FILE__, __LINE__);
 #define QUEUEDEBUG_CIRCLEQ_ELM(head, elm, field)                       \
-       if ((elm)->field.cqe_next == (void *)(head)) {                  \
+       if ((elm)->field.cqe_next == CIRCLEQ_END(head)) {                       \
                if ((head)->cqh_last != (elm))                          \
                        panic("CIRCLEQ elm last %p %s:%d", (elm),       \
                              __FILE__, __LINE__);                      \
@@ -622,7 +622,7 @@
                        panic("CIRCLEQ elm forw %p %s:%d", (elm),       \
                              __FILE__, __LINE__);                      \
        }                                                               \
-       if ((elm)->field.cqe_prev == (void *)(head)) {                  \
+       if ((elm)->field.cqe_prev == CIRCLEQ_END(head)) {                       \
                if ((head)->cqh_first != (elm))                         \
                        panic("CIRCLEQ elm first %p %s:%d", (elm),      \
                              __FILE__, __LINE__);                      \
@@ -647,7 +647,7 @@
 }
 
 #define        CIRCLEQ_HEAD_INITIALIZER(head)                                  \
-       { (void *)&head, (void *)&head }
+       { CIRCLEQ_END(&head), CIRCLEQ_END(&head) }
 
 #define        CIRCLEQ_ENTRY(type)                                             \
 struct {                                                               \
@@ -659,8 +659,8 @@
  * Circular queue functions.
  */
 #define        CIRCLEQ_INIT(head) do {                                         \
-       (head)->cqh_first = (void *)(head);                             \
-       (head)->cqh_last = (void *)(head);                              \
+       (head)->cqh_first = CIRCLEQ_END(head);                          \
+       (head)->cqh_last = CIRCLEQ_END(head);                           \
 } while (/*CONSTCOND*/0)
 
 #define        CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) do {            \
@@ -668,7 +668,7 @@
        QUEUEDEBUG_CIRCLEQ_ELM((head), (listelm), field)                \
        (elm)->field.cqe_next = (listelm)->field.cqe_next;              \
        (elm)->field.cqe_prev = (listelm);                              \
-       if ((listelm)->field.cqe_next == (void *)(head))                \
+       if ((listelm)->field.cqe_next == CIRCLEQ_END(head))             \
                (head)->cqh_last = (elm);                               \
        else                                                            \
                (listelm)->field.cqe_next->field.cqe_prev = (elm);      \
@@ -680,7 +680,7 @@
        QUEUEDEBUG_CIRCLEQ_ELM((head), (listelm), field)                \
        (elm)->field.cqe_next = (listelm);                              \
        (elm)->field.cqe_prev = (listelm)->field.cqe_prev;              \
-       if ((listelm)->field.cqe_prev == (void *)(head))                \
+       if ((listelm)->field.cqe_prev == CIRCLEQ_END(head))             \
                (head)->cqh_first = (elm);                              \
        else                                                            \
                (listelm)->field.cqe_prev->field.cqe_next = (elm);      \
@@ -690,8 +690,8 @@
 #define        CIRCLEQ_INSERT_HEAD(head, elm, field) do {                      \
        QUEUEDEBUG_CIRCLEQ_HEAD((head), field)                          \
        (elm)->field.cqe_next = (head)->cqh_first;                      \
-       (elm)->field.cqe_prev = (void *)(head);                         \
-       if ((head)->cqh_last == (void *)(head))                         \
+       (elm)->field.cqe_prev = CIRCLEQ_END(head);                      \
+       if ((head)->cqh_last == CIRCLEQ_END(head))                      \
                (head)->cqh_last = (elm);                               \
        else                                                            \
                (head)->cqh_first->field.cqe_prev = (elm);              \
@@ -700,9 +700,9 @@
 
 #define        CIRCLEQ_INSERT_TAIL(head, elm, field) do {                      \
        QUEUEDEBUG_CIRCLEQ_HEAD((head), field)                          \
-       (elm)->field.cqe_next = (void *)(head);                         \
+       (elm)->field.cqe_next = CIRCLEQ_END(head);                      \
        (elm)->field.cqe_prev = (head)->cqh_last;                       \
-       if ((head)->cqh_first == (void *)(head))                        \
+       if ((head)->cqh_first == CIRCLEQ_END(head))                     \
                (head)->cqh_first = (elm);                              \
        else                                                            \
                (head)->cqh_last->field.cqe_next = (elm);               \
@@ -712,12 +712,12 @@
 #define        CIRCLEQ_REMOVE(head, elm, field) do {                           \
        QUEUEDEBUG_CIRCLEQ_HEAD((head), field)                          \
        QUEUEDEBUG_CIRCLEQ_ELM((head), (elm), field)                    \
-       if ((elm)->field.cqe_next == (void *)(head))                    \
+       if ((elm)->field.cqe_next == CIRCLEQ_END(head))                 \
                (head)->cqh_last = (elm)->field.cqe_prev;               \
        else                                                            \
                (elm)->field.cqe_next->field.cqe_prev =                 \
                    (elm)->field.cqe_prev;                              \
-       if ((elm)->field.cqe_prev == (void *)(head))                    \
+       if ((elm)->field.cqe_prev == CIRCLEQ_END(head))                 \
                (head)->cqh_first = (elm)->field.cqe_next;              \
        else                                                            \
                (elm)->field.cqe_prev->field.cqe_next =                 \
@@ -727,29 +727,31 @@
 
 #define        CIRCLEQ_FOREACH(var, head, field)                               \
        for ((var) = ((head)->cqh_first);                               \
-               (var) != (const void *)(head);                          \
+               (var) != CIRCLEQ_END(head);                             \
                (var) = ((var)->field.cqe_next))
 
 #define        CIRCLEQ_FOREACH_REVERSE(var, head, field)                       \
        for ((var) = ((head)->cqh_last);                                \
-               (var) != (const void *)(head);                          \
+               (var) != CIRCLEQ_END(head);                             \
                (var) = ((var)->field.cqe_prev))
 
 /*
  * Circular queue access methods.
  */
-#define        CIRCLEQ_EMPTY(head)             ((head)->cqh_first == (void *)(head))
 #define        CIRCLEQ_FIRST(head)             ((head)->cqh_first)
 #define        CIRCLEQ_LAST(head)              ((head)->cqh_last)
+#define        CIRCLEQ_END(head)               ((void *)(head))
 #define        CIRCLEQ_NEXT(elm, field)        ((elm)->field.cqe_next)
 #define        CIRCLEQ_PREV(elm, field)        ((elm)->field.cqe_prev)
+#define        CIRCLEQ_EMPTY(head)                                             \
+    (CIRCLEQ_FIRST(head) == CIRCLEQ_END(head))
 
 #define CIRCLEQ_LOOP_NEXT(head, elm, field)                            \
-       (((elm)->field.cqe_next == (void *)(head))                      \
+       (((elm)->field.cqe_next == CIRCLEQ_END(head))                   \
            ? ((head)->cqh_first)                                       \
            : (elm->field.cqe_next))
 #define CIRCLEQ_LOOP_PREV(head, elm, field)                            \
-       (((elm)->field.cqe_prev == (void *)(head))                      \
+       (((elm)->field.cqe_prev == CIRCLEQ_END(head))                   \
            ? ((head)->cqh_last)                                        \
            : (elm->field.cqe_prev))
 



Home | Main Index | Thread Index | Old Index