Source-Changes-HG archive

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

[src/trunk]: src/sys/sys provide a const and a non const flavor for CIRCLEQ_E...



details:   https://anonhg.NetBSD.org/src/rev/480b812f4592
branches:  trunk
changeset: 791506:480b812f4592
user:      christos <christos%NetBSD.org@localhost>
date:      Thu Nov 21 19:04:19 2013 +0000

description:
provide a const and a non const flavor for CIRCLEQ_END because the kernel
needs a const one. The const one is supposed to be used for comparisons
and the non-const one for assignments.

diffstat:

 sys/sys/queue.h |  39 +++++++++++++++++++++------------------
 1 files changed, 21 insertions(+), 18 deletions(-)

diffs (131 lines):

diff -r dec9d57c8389 -r 480b812f4592 sys/sys/queue.h
--- a/sys/sys/queue.h   Thu Nov 21 18:39:50 2013 +0000
+++ b/sys/sys/queue.h   Thu Nov 21 19:04:19 2013 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: queue.h,v 1.56 2013/11/21 15:54:17 christos Exp $      */
+/*     $NetBSD: queue.h,v 1.57 2013/11/21 19:04:19 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 != CIRCLEQ_END(head) &&                   \
-           (head)->cqh_first->field.cqe_prev != CIRCLEQ_END(head))     \
+       if ((head)->cqh_first != CIRCLEQ_ENDC(head) &&                  \
+           (head)->cqh_first->field.cqe_prev != CIRCLEQ_ENDC(head))    \
                panic("CIRCLEQ head forw %p %s:%d", (head),             \
                      __FILE__, __LINE__);                              \
-       if ((head)->cqh_last != CIRCLEQ_END(head) &&                    \
-           (head)->cqh_last->field.cqe_next != CIRCLEQ_END(head))              \
+       if ((head)->cqh_last != CIRCLEQ_ENDC(head) &&                   \
+           (head)->cqh_last->field.cqe_next != CIRCLEQ_ENDC(head))             \
                panic("CIRCLEQ head back %p %s:%d", (head),             \
                      __FILE__, __LINE__);
 #define QUEUEDEBUG_CIRCLEQ_ELM(head, elm, field)                       \
-       if ((elm)->field.cqe_next == CIRCLEQ_END(head)) {                       \
+       if ((elm)->field.cqe_next == CIRCLEQ_ENDC(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 == CIRCLEQ_END(head)) {                       \
+       if ((elm)->field.cqe_prev == CIRCLEQ_ENDC(head)) {                      \
                if ((head)->cqh_first != (elm))                         \
                        panic("CIRCLEQ elm first %p %s:%d", (elm),      \
                              __FILE__, __LINE__);                      \
@@ -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 == CIRCLEQ_END(head))             \
+       if ((listelm)->field.cqe_next == CIRCLEQ_ENDC(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 == CIRCLEQ_END(head))             \
+       if ((listelm)->field.cqe_prev == CIRCLEQ_ENDC(head))            \
                (head)->cqh_first = (elm);                              \
        else                                                            \
                (listelm)->field.cqe_prev->field.cqe_next = (elm);      \
@@ -691,7 +691,7 @@
        QUEUEDEBUG_CIRCLEQ_HEAD((head), field)                          \
        (elm)->field.cqe_next = (head)->cqh_first;                      \
        (elm)->field.cqe_prev = CIRCLEQ_END(head);                      \
-       if ((head)->cqh_last == CIRCLEQ_END(head))                      \
+       if ((head)->cqh_last == CIRCLEQ_ENDC(head))                     \
                (head)->cqh_last = (elm);                               \
        else                                                            \
                (head)->cqh_first->field.cqe_prev = (elm);              \
@@ -702,7 +702,7 @@
        QUEUEDEBUG_CIRCLEQ_HEAD((head), field)                          \
        (elm)->field.cqe_next = CIRCLEQ_END(head);                      \
        (elm)->field.cqe_prev = (head)->cqh_last;                       \
-       if ((head)->cqh_first == CIRCLEQ_END(head))                     \
+       if ((head)->cqh_first == CIRCLEQ_ENDC(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 == CIRCLEQ_END(head))                 \
+       if ((elm)->field.cqe_next == CIRCLEQ_ENDC(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 == CIRCLEQ_END(head))                 \
+       if ((elm)->field.cqe_prev == CIRCLEQ_ENDC(head))                        \
                (head)->cqh_first = (elm)->field.cqe_next;              \
        else                                                            \
                (elm)->field.cqe_prev->field.cqe_next =                 \
@@ -727,12 +727,12 @@
 
 #define        CIRCLEQ_FOREACH(var, head, field)                               \
        for ((var) = ((head)->cqh_first);                               \
-               (var) != CIRCLEQ_END(head);                             \
+               (var) != CIRCLEQ_ENDC(head);                            \
                (var) = ((var)->field.cqe_next))
 
 #define        CIRCLEQ_FOREACH_REVERSE(var, head, field)                       \
        for ((var) = ((head)->cqh_last);                                \
-               (var) != CIRCLEQ_END(head);                             \
+               (var) != CIRCLEQ_ENDC(head);                            \
                (var) = ((var)->field.cqe_prev))
 
 /*
@@ -740,18 +740,21 @@
  */
 #define        CIRCLEQ_FIRST(head)             ((head)->cqh_first)
 #define        CIRCLEQ_LAST(head)              ((head)->cqh_last)
+/* For comparisons */
+#define        CIRCLEQ_ENDC(head)              ((const void *)(head))
+/* For assignments */
 #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))
+    (CIRCLEQ_FIRST(head) == CIRCLEQ_ENDC(head))
 
 #define CIRCLEQ_LOOP_NEXT(head, elm, field)                            \
-       (((elm)->field.cqe_next == CIRCLEQ_END(head))                   \
+       (((elm)->field.cqe_next == CIRCLEQ_ENDC(head))                  \
            ? ((head)->cqh_first)                                       \
            : (elm->field.cqe_next))
 #define CIRCLEQ_LOOP_PREV(head, elm, field)                            \
-       (((elm)->field.cqe_prev == CIRCLEQ_END(head))                   \
+       (((elm)->field.cqe_prev == CIRCLEQ_ENDC(head))                  \
            ? ((head)->cqh_last)                                        \
            : (elm->field.cqe_prev))
 



Home | Main Index | Thread Index | Old Index