Module Name:    src
Committed By:   christos
Date:           Thu Nov 21 15:54:17 UTC 2013

Modified Files:
        src/sys/sys: queue.h

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


To generate a diff of this commit:
cvs rdiff -u -r1.55 -r1.56 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.55 src/sys/sys/queue.h:1.56
--- src/sys/sys/queue.h:1.55	Wed Jul 17 11:50:59 2013
+++ src/sys/sys/queue.h	Thu Nov 21 10:54:17 2013
@@ -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 @@ struct {								\
  */
 #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 @@ struct {								\
 			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 @@ struct name {								\
 }
 
 #define	CIRCLEQ_HEAD_INITIALIZER(head)					\
-	{ (void *)&head, (void *)&head }
+	{ CIRCLEQ_END(&head), CIRCLEQ_END(&head) }
 
 #define	CIRCLEQ_ENTRY(type)						\
 struct {								\
@@ -659,8 +659,8 @@ struct {								\
  * 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 @@ 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 == (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 @@ 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 == (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 @@ struct {								\
 #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 @@ struct {								\
 
 #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 @@ struct {								\
 #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 @@ struct {								\
 
 #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))
 

Reply via email to