Module Name: src Committed By: christos Date: Thu Nov 21 19:04:19 UTC 2013
Modified Files: src/sys/sys: queue.h Log Message: 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. To generate a diff of this commit: cvs rdiff -u -r1.56 -r1.57 src/sys/sys/queue.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/sys/queue.h diff -u src/sys/sys/queue.h:1.56 src/sys/sys/queue.h:1.57 --- src/sys/sys/queue.h:1.56 Thu Nov 21 10:54:17 2013 +++ src/sys/sys/queue.h Thu Nov 21 14:04:19 2013 @@ -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 @@ struct { \ */ #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 @@ struct { \ 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 @@ struct { \ 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 @@ struct { \ 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 @@ struct { \ 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 @@ struct { \ 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 @@ struct { \ #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 @@ struct { \ #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 @@ struct { \ */ #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))