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:
parent
fa64b9442b
commit
3d98b75bac
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=192926
@ -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
|
||||||
|
@ -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);
|
||||||
|
@ -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 \
|
||||||
|
@ -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
|
||||||
|
@ -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); \
|
||||||
|
Loading…
Reference in New Issue
Block a user