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.
This commit is contained in:
Ed Schouten 2009-05-27 19:28:04 +00:00
parent fa64b9442b
commit 3d98b75bac
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=192926
5 changed files with 31 additions and 28 deletions

View File

@ -14,6 +14,9 @@
# The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # 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 # 20090527: removal of legacy USB stack
OLD_FILES+=usr/include/legacy/dev/usb/dsbr100io.h OLD_FILES+=usr/include/legacy/dev/usb/dsbr100io.h
OLD_FILES+=usr/include/legacy/dev/usb/ehcireg.h OLD_FILES+=usr/include/legacy/dev/usb/ehcireg.h

View File

@ -191,7 +191,7 @@ pclose(iop)
if (last == NULL) if (last == NULL)
SLIST_REMOVE_HEAD(&pidlist, next); SLIST_REMOVE_HEAD(&pidlist, next);
else else
SLIST_REMOVE_NEXT(&pidlist, last, next); SLIST_REMOVE_AFTER(last, next);
THREAD_UNLOCK(); THREAD_UNLOCK();
(void)fclose(iop); (void)fclose(iop);

View File

@ -65,8 +65,8 @@ MLINKS+= queue.3 LIST_EMPTY.3 \
queue.3 SLIST_INSERT_HEAD.3 \ queue.3 SLIST_INSERT_HEAD.3 \
queue.3 SLIST_NEXT.3 \ queue.3 SLIST_NEXT.3 \
queue.3 SLIST_REMOVE.3 \ queue.3 SLIST_REMOVE.3 \
queue.3 SLIST_REMOVE_AFTER.3 \
queue.3 SLIST_REMOVE_HEAD.3 \ queue.3 SLIST_REMOVE_HEAD.3 \
queue.3 SLIST_REMOVE_NEXT.3 \
queue.3 STAILQ_CONCAT.3 \ queue.3 STAILQ_CONCAT.3 \
queue.3 STAILQ_EMPTY.3 \ queue.3 STAILQ_EMPTY.3 \
queue.3 STAILQ_ENTRY.3 \ queue.3 STAILQ_ENTRY.3 \
@ -82,8 +82,8 @@ MLINKS+= queue.3 LIST_EMPTY.3 \
queue.3 STAILQ_LAST.3 \ queue.3 STAILQ_LAST.3 \
queue.3 STAILQ_NEXT.3 \ queue.3 STAILQ_NEXT.3 \
queue.3 STAILQ_REMOVE.3 \ queue.3 STAILQ_REMOVE.3 \
queue.3 STAILQ_REMOVE_AFTER.3 \
queue.3 STAILQ_REMOVE_HEAD.3 \ queue.3 STAILQ_REMOVE_HEAD.3 \
queue.3 STAILQ_REMOVE_NEXT.3 \
queue.3 TAILQ_CONCAT.3 \ queue.3 TAILQ_CONCAT.3 \
queue.3 TAILQ_EMPTY.3 \ queue.3 TAILQ_EMPTY.3 \
queue.3 TAILQ_ENTRY.3 \ queue.3 TAILQ_ENTRY.3 \

View File

@ -47,8 +47,8 @@
.Nm SLIST_INSERT_AFTER , .Nm SLIST_INSERT_AFTER ,
.Nm SLIST_INSERT_HEAD , .Nm SLIST_INSERT_HEAD ,
.Nm SLIST_NEXT , .Nm SLIST_NEXT ,
.Nm SLIST_REMOVE_AFTER ,
.Nm SLIST_REMOVE_HEAD , .Nm SLIST_REMOVE_HEAD ,
.Nm SLIST_REMOVE_NEXT ,
.Nm SLIST_REMOVE , .Nm SLIST_REMOVE ,
.Nm STAILQ_CONCAT , .Nm STAILQ_CONCAT ,
.Nm STAILQ_EMPTY , .Nm STAILQ_EMPTY ,
@ -64,8 +64,8 @@
.Nm STAILQ_INSERT_TAIL , .Nm STAILQ_INSERT_TAIL ,
.Nm STAILQ_LAST , .Nm STAILQ_LAST ,
.Nm STAILQ_NEXT , .Nm STAILQ_NEXT ,
.Nm STAILQ_REMOVE_AFTER ,
.Nm STAILQ_REMOVE_HEAD , .Nm STAILQ_REMOVE_HEAD ,
.Nm STAILQ_REMOVE_NEXT ,
.Nm STAILQ_REMOVE , .Nm STAILQ_REMOVE ,
.Nm LIST_EMPTY , .Nm LIST_EMPTY ,
.Nm LIST_ENTRY , .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_AFTER "TYPE *listelm" "TYPE *elm" "SLIST_ENTRY NAME"
.Fn SLIST_INSERT_HEAD "SLIST_HEAD *head" "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_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_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 SLIST_REMOVE "SLIST_HEAD *head" "TYPE *elm" "TYPE" "SLIST_ENTRY NAME"
.\" .\"
.Fn STAILQ_CONCAT "STAILQ_HEAD *head1" "STAILQ_HEAD *head2" .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_INSERT_TAIL "STAILQ_HEAD *head" "TYPE *elm" "STAILQ_ENTRY NAME"
.Fn STAILQ_LAST "STAILQ_HEAD *head" "TYPE" "STAILQ_ENTRY NAME" .Fn STAILQ_LAST "STAILQ_HEAD *head" "TYPE" "STAILQ_ENTRY NAME"
.Fn STAILQ_NEXT "TYPE *elm" "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_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 STAILQ_REMOVE "STAILQ_HEAD *head" "TYPE *elm" "TYPE" "STAILQ_ENTRY NAME"
.\" .\"
.Fn LIST_EMPTY "LIST_HEAD *head" .Fn LIST_EMPTY "LIST_HEAD *head"
@ -380,6 +380,14 @@ The macro
returns the next element in the list. returns the next element in the list.
.Pp .Pp
The macro 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 .Nm SLIST_REMOVE_HEAD
removes the element removes the element
.Fa elm .Fa elm
@ -391,14 +399,6 @@ this macro instead of the generic
macro. macro.
.Pp .Pp
The macro 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 .Nm SLIST_REMOVE
removes the element removes the element
.Fa elm .Fa elm
@ -564,6 +564,14 @@ The macro
returns the next item on the tail queue, or NULL this item is the last. returns the next item on the tail queue, or NULL this item is the last.
.Pp .Pp
The macro 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 .Nm STAILQ_REMOVE_HEAD
removes the element at the head of the tail queue. removes the element at the head of the tail queue.
For optimum efficiency, For optimum efficiency,
@ -573,14 +581,6 @@ use this macro explicitly rather than the generic
macro. macro.
.Pp .Pp
The macro 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 .Nm STAILQ_REMOVE
removes the element removes the element
.Fa elm .Fa elm

View File

@ -96,8 +96,8 @@
* _INSERT_AFTER + + + + * _INSERT_AFTER + + + +
* _INSERT_TAIL - - + + * _INSERT_TAIL - - + +
* _CONCAT - - + + * _CONCAT - - + +
* _REMOVE_AFTER + - + -
* _REMOVE_HEAD + - + - * _REMOVE_HEAD + - + -
* _REMOVE_NEXT + - + -
* _REMOVE + + + + * _REMOVE + + + +
* *
*/ */
@ -196,12 +196,12 @@ struct { \
struct type *curelm = SLIST_FIRST((head)); \ struct type *curelm = SLIST_FIRST((head)); \
while (SLIST_NEXT(curelm, field) != (elm)) \ while (SLIST_NEXT(curelm, field) != (elm)) \
curelm = SLIST_NEXT(curelm, field); \ curelm = SLIST_NEXT(curelm, field); \
SLIST_REMOVE_NEXT(head, curelm, field); \ SLIST_REMOVE_AFTER(curelm, field); \
} \ } \
TRASHIT((elm)->field.sle_next); \ TRASHIT((elm)->field.sle_next); \
} while (0) } while (0)
#define SLIST_REMOVE_NEXT(head, elm, field) do { \ #define SLIST_REMOVE_AFTER(elm, field) do { \
SLIST_NEXT(elm, field) = \ SLIST_NEXT(elm, field) = \
SLIST_NEXT(SLIST_NEXT(elm, field), field); \ SLIST_NEXT(SLIST_NEXT(elm, field), field); \
} while (0) } while (0)
@ -292,7 +292,7 @@ struct { \
struct type *curelm = STAILQ_FIRST((head)); \ struct type *curelm = STAILQ_FIRST((head)); \
while (STAILQ_NEXT(curelm, field) != (elm)) \ while (STAILQ_NEXT(curelm, field) != (elm)) \
curelm = STAILQ_NEXT(curelm, field); \ curelm = STAILQ_NEXT(curelm, field); \
STAILQ_REMOVE_NEXT(head, curelm, field); \ STAILQ_REMOVE_AFTER(head, curelm, field); \
} \ } \
TRASHIT((elm)->field.stqe_next); \ TRASHIT((elm)->field.stqe_next); \
} while (0) } while (0)
@ -303,7 +303,7 @@ struct { \
(head)->stqh_last = &STAILQ_FIRST((head)); \ (head)->stqh_last = &STAILQ_FIRST((head)); \
} while (0) } while (0)
#define STAILQ_REMOVE_NEXT(head, elm, field) do { \ #define STAILQ_REMOVE_AFTER(head, elm, field) do { \
if ((STAILQ_NEXT(elm, field) = \ if ((STAILQ_NEXT(elm, field) = \
STAILQ_NEXT(STAILQ_NEXT(elm, field), field)) == NULL) \ STAILQ_NEXT(STAILQ_NEXT(elm, field), field)) == NULL) \
(head)->stqh_last = &STAILQ_NEXT((elm), field); \ (head)->stqh_last = &STAILQ_NEXT((elm), field); \