svn commit: r192926 - in head: . lib/libc/gen share/man/man3 sys/sys

Ed Schouten ed at FreeBSD.org
Wed May 27 19:28:06 UTC 2009


Author: ed
Date: Wed May 27 19:28:04 2009
New Revision: 192926
URL: http://svn.freebsd.org/changeset/base/192926

Log:
  Rename the queue macros I introduced last year.
  
  Last year I added SLIST_REMOVE_NEXT and STAILQ_REMOVE_NEXT, to remove
  entries behind an element in the list, using O(1) time. I recently
  discovered NetBSD also has a similar macro, called SLIST_REMOVE_AFTER.
  In my opinion this approach is a lot better:
  
  - It doesn't have the unused first argument of the list pointer. I added
    this, mainly because OpenBSD also had it.
  
  - The _AFTER suffix makes a lot more sense, because it is related to
    SLIST_INSERT_AFTER. _NEXT is only used to iterate through the list.
  
  The reason why I want to rename this now, is to make sure we don't
  release a major version with the badly named macros.

Modified:
  head/ObsoleteFiles.inc
  head/lib/libc/gen/popen.c
  head/share/man/man3/Makefile
  head/share/man/man3/queue.3
  head/sys/sys/queue.h

Modified: head/ObsoleteFiles.inc
==============================================================================
--- head/ObsoleteFiles.inc	Wed May 27 19:27:29 2009	(r192925)
+++ head/ObsoleteFiles.inc	Wed May 27 19:28:04 2009	(r192926)
@@ -14,6 +14,9 @@
 # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last.
 #
 
+# 20090527: renaming of S{LIST,TAILQ}_REMOVE_NEXT() to _REMOVE_AFTER()
+OLD_FILES+=usr/share/man/man3/SLIST_REMOVE_NEXT.3.gz
+OLD_FILES+=usr/share/man/man3/STAILQ_REMOVE_NEXT.3.gz
 # 20090527: removal of legacy USB stack
 OLD_FILES+=usr/include/legacy/dev/usb/dsbr100io.h
 OLD_FILES+=usr/include/legacy/dev/usb/ehcireg.h

Modified: head/lib/libc/gen/popen.c
==============================================================================
--- head/lib/libc/gen/popen.c	Wed May 27 19:27:29 2009	(r192925)
+++ head/lib/libc/gen/popen.c	Wed May 27 19:28:04 2009	(r192926)
@@ -191,7 +191,7 @@ pclose(iop)
 	if (last == NULL)
 		SLIST_REMOVE_HEAD(&pidlist, next);
 	else
-		SLIST_REMOVE_NEXT(&pidlist, last, next);
+		SLIST_REMOVE_AFTER(last, next);
 	THREAD_UNLOCK();
 
 	(void)fclose(iop);

Modified: head/share/man/man3/Makefile
==============================================================================
--- head/share/man/man3/Makefile	Wed May 27 19:27:29 2009	(r192925)
+++ head/share/man/man3/Makefile	Wed May 27 19:28:04 2009	(r192926)
@@ -65,8 +65,8 @@ MLINKS+=	queue.3 LIST_EMPTY.3 \
 		queue.3 SLIST_INSERT_HEAD.3 \
 		queue.3 SLIST_NEXT.3 \
 		queue.3 SLIST_REMOVE.3 \
+		queue.3 SLIST_REMOVE_AFTER.3 \
 		queue.3 SLIST_REMOVE_HEAD.3 \
-		queue.3 SLIST_REMOVE_NEXT.3 \
 		queue.3 STAILQ_CONCAT.3 \
 		queue.3 STAILQ_EMPTY.3 \
 		queue.3 STAILQ_ENTRY.3 \
@@ -82,8 +82,8 @@ MLINKS+=	queue.3 LIST_EMPTY.3 \
 		queue.3 STAILQ_LAST.3 \
 		queue.3 STAILQ_NEXT.3 \
 		queue.3 STAILQ_REMOVE.3 \
+		queue.3 STAILQ_REMOVE_AFTER.3 \
 		queue.3 STAILQ_REMOVE_HEAD.3 \
-		queue.3 STAILQ_REMOVE_NEXT.3 \
 		queue.3 TAILQ_CONCAT.3 \
 		queue.3 TAILQ_EMPTY.3 \
 		queue.3 TAILQ_ENTRY.3 \

Modified: head/share/man/man3/queue.3
==============================================================================
--- head/share/man/man3/queue.3	Wed May 27 19:27:29 2009	(r192925)
+++ head/share/man/man3/queue.3	Wed May 27 19:28:04 2009	(r192926)
@@ -47,8 +47,8 @@
 .Nm SLIST_INSERT_AFTER ,
 .Nm SLIST_INSERT_HEAD ,
 .Nm SLIST_NEXT ,
+.Nm SLIST_REMOVE_AFTER ,
 .Nm SLIST_REMOVE_HEAD ,
-.Nm SLIST_REMOVE_NEXT ,
 .Nm SLIST_REMOVE ,
 .Nm STAILQ_CONCAT ,
 .Nm STAILQ_EMPTY ,
@@ -64,8 +64,8 @@
 .Nm STAILQ_INSERT_TAIL ,
 .Nm STAILQ_LAST ,
 .Nm STAILQ_NEXT ,
+.Nm STAILQ_REMOVE_AFTER ,
 .Nm STAILQ_REMOVE_HEAD ,
-.Nm STAILQ_REMOVE_NEXT ,
 .Nm STAILQ_REMOVE ,
 .Nm LIST_EMPTY ,
 .Nm LIST_ENTRY ,
@@ -115,8 +115,8 @@ lists and tail queues
 .Fn SLIST_INSERT_AFTER "TYPE *listelm" "TYPE *elm" "SLIST_ENTRY NAME"
 .Fn SLIST_INSERT_HEAD "SLIST_HEAD *head" "TYPE *elm" "SLIST_ENTRY NAME"
 .Fn SLIST_NEXT "TYPE *elm" "SLIST_ENTRY NAME"
+.Fn SLIST_REMOVE_AFTER "TYPE *elm" "SLIST_ENTRY NAME"
 .Fn SLIST_REMOVE_HEAD "SLIST_HEAD *head" "SLIST_ENTRY NAME"
-.Fn SLIST_REMOVE_NEXT "SLIST_HEAD *head" "TYPE *elm" "SLIST_ENTRY NAME"
 .Fn SLIST_REMOVE "SLIST_HEAD *head" "TYPE *elm" "TYPE" "SLIST_ENTRY NAME"
 .\"
 .Fn STAILQ_CONCAT "STAILQ_HEAD *head1" "STAILQ_HEAD *head2"
@@ -133,8 +133,8 @@ lists and tail queues
 .Fn STAILQ_INSERT_TAIL "STAILQ_HEAD *head" "TYPE *elm" "STAILQ_ENTRY NAME"
 .Fn STAILQ_LAST "STAILQ_HEAD *head" "TYPE" "STAILQ_ENTRY NAME"
 .Fn STAILQ_NEXT "TYPE *elm" "STAILQ_ENTRY NAME"
+.Fn STAILQ_REMOVE_AFTER "STAILQ_HEAD *head" "TYPE *elm" "STAILQ_ENTRY NAME"
 .Fn STAILQ_REMOVE_HEAD "STAILQ_HEAD *head" "STAILQ_ENTRY NAME"
-.Fn STAILQ_REMOVE_NEXT "STAILQ_HEAD *head" "TYPE *elm" "STAILQ_ENTRY NAME"
 .Fn STAILQ_REMOVE "STAILQ_HEAD *head" "TYPE *elm" "TYPE" "STAILQ_ENTRY NAME"
 .\"
 .Fn LIST_EMPTY "LIST_HEAD *head"
@@ -380,6 +380,14 @@ The macro
 returns the next element in the list.
 .Pp
 The macro
+.Nm SLIST_REMOVE_AFTER
+removes the element after
+.Fa elm
+from the list. Unlike
+.Fa SLIST_REMOVE ,
+this macro does not traverse the entire list.
+.Pp
+The macro
 .Nm SLIST_REMOVE_HEAD
 removes the element
 .Fa elm
@@ -391,14 +399,6 @@ this macro instead of the generic
 macro.
 .Pp
 The macro
-.Nm SLIST_REMOVE_NEXT
-removes the element after
-.Fa elm
-from the list. Unlike
-.Fa SLIST_REMOVE ,
-this macro does not traverse the entire list.
-.Pp
-The macro
 .Nm SLIST_REMOVE
 removes the element
 .Fa elm
@@ -564,6 +564,14 @@ The macro
 returns the next item on the tail queue, or NULL this item is the last.
 .Pp
 The macro
+.Nm STAILQ_REMOVE_AFTER
+removes the element after
+.Fa elm
+from the tail queue. Unlike
+.Fa STAILQ_REMOVE ,
+this macro does not traverse the entire tail queue.
+.Pp
+The macro
 .Nm STAILQ_REMOVE_HEAD
 removes the element at the head of the tail queue.
 For optimum efficiency,
@@ -573,14 +581,6 @@ use this macro explicitly rather than th
 macro.
 .Pp
 The macro
-.Nm STAILQ_REMOVE_NEXT
-removes the element after
-.Fa elm
-from the tail queue. Unlike
-.Fa STAILQ_REMOVE ,
-this macro does not traverse the entire tail queue.
-.Pp
-The macro
 .Nm STAILQ_REMOVE
 removes the element
 .Fa elm

Modified: head/sys/sys/queue.h
==============================================================================
--- head/sys/sys/queue.h	Wed May 27 19:27:29 2009	(r192925)
+++ head/sys/sys/queue.h	Wed May 27 19:28:04 2009	(r192926)
@@ -96,8 +96,8 @@
  * _INSERT_AFTER		+	+	+	+
  * _INSERT_TAIL			-	-	+	+
  * _CONCAT			-	-	+	+
+ * _REMOVE_AFTER		+	-	+	-
  * _REMOVE_HEAD			+	-	+	-
- * _REMOVE_NEXT			+	-	+	-
  * _REMOVE			+	+	+	+
  *
  */
@@ -196,12 +196,12 @@ struct {								\
 		struct type *curelm = SLIST_FIRST((head));		\
 		while (SLIST_NEXT(curelm, field) != (elm))		\
 			curelm = SLIST_NEXT(curelm, field);		\
-		SLIST_REMOVE_NEXT(head, curelm, field);			\
+		SLIST_REMOVE_AFTER(curelm, field);			\
 	}								\
 	TRASHIT((elm)->field.sle_next);					\
 } while (0)
 
-#define SLIST_REMOVE_NEXT(head, elm, field) do {				\
+#define SLIST_REMOVE_AFTER(elm, field) do {				\
 	SLIST_NEXT(elm, field) =					\
 	    SLIST_NEXT(SLIST_NEXT(elm, field), field);			\
 } while (0)
@@ -292,7 +292,7 @@ struct {								\
 		struct type *curelm = STAILQ_FIRST((head));		\
 		while (STAILQ_NEXT(curelm, field) != (elm))		\
 			curelm = STAILQ_NEXT(curelm, field);		\
-		STAILQ_REMOVE_NEXT(head, curelm, field);		\
+		STAILQ_REMOVE_AFTER(head, curelm, field);		\
 	}								\
 	TRASHIT((elm)->field.stqe_next);				\
 } while (0)
@@ -303,7 +303,7 @@ struct {								\
 		(head)->stqh_last = &STAILQ_FIRST((head));		\
 } while (0)
 
-#define STAILQ_REMOVE_NEXT(head, elm, field) do {			\
+#define STAILQ_REMOVE_AFTER(head, elm, field) do {			\
 	if ((STAILQ_NEXT(elm, field) =					\
 	     STAILQ_NEXT(STAILQ_NEXT(elm, field), field)) == NULL)	\
 		(head)->stqh_last = &STAILQ_NEXT((elm), field);		\


More information about the svn-src-all mailing list