mpi@ reminded me I had this diff cooking.
This diff renames SIMPLEQ_* to STAILQ_* in /usr/src/sys/sys to unify with
FreeBSD and Linux.
I added aliases at the end of queue.h to avoid breaking base too much. they will
be removed as soon as diff 2,3,4,5,6,7 are commited.
net/sniproxy has a patch to define STAILQ_*, it may be removed later.
Index: buf.h
===================================================================
RCS file: /cvs/src/sys/sys/buf.h,v
retrieving revision 1.112
diff -u -p -r1.112 buf.h
--- buf.h 29 Nov 2019 01:04:08 -0000 1.112
+++ buf.h 25 Dec 2020 14:24:08 -0000
@@ -105,15 +105,15 @@ void bufq_quiesce(void);
void bufq_restart(void);
/* fifo */
-SIMPLEQ_HEAD(bufq_fifo_head, buf);
+STAILQ_HEAD(bufq_fifo_head, buf);
struct bufq_fifo {
- SIMPLEQ_ENTRY(buf) bqf_entries;
+ STAILQ_ENTRY(buf) bqf_entries;
};
/* nscan */
-SIMPLEQ_HEAD(bufq_nscan_head, buf);
+STAILQ_HEAD(bufq_nscan_head, buf);
struct bufq_nscan {
- SIMPLEQ_ENTRY(buf) bqf_entries;
+ STAILQ_ENTRY(buf) bqf_entries;
};
/* bufq link in struct buf */
Index: fusebuf.h
===================================================================
RCS file: /cvs/src/sys/sys/fusebuf.h,v
retrieving revision 1.13
diff -u -p -r1.13 fusebuf.h
--- fusebuf.h 19 Jun 2018 11:27:54 -0000 1.13
+++ fusebuf.h 25 Dec 2020 14:24:08 -0000
@@ -27,7 +27,7 @@
/* header at beginning of each fusebuf: */
struct fb_hdr {
- SIMPLEQ_ENTRY(fusebuf) fh_next; /* next buffer in chain */
+ STAILQ_ENTRY(fusebuf) fh_next; /* next buffer in chain */
size_t fh_len; /* Amount of data */
int fh_err; /* errno to pass back */
int fh_type; /* type of data */
Index: pool.h
===================================================================
RCS file: /cvs/src/sys/sys/pool.h,v
retrieving revision 1.77
diff -u -p -r1.77 pool.h
--- pool.h 19 Jul 2019 09:03:03 -0000 1.77
+++ pool.h 25 Dec 2020 14:24:08 -0000
@@ -152,7 +152,7 @@ struct pool {
union pool_lock pr_lock;
const struct pool_lock_ops *
pr_lock_ops;
- SIMPLEQ_ENTRY(pool)
+ STAILQ_ENTRY(pool)
pr_poollist;
struct pool_pagelist
pr_emptypages; /* Empty pages */
Index: queue.h
===================================================================
RCS file: /cvs/src/sys/sys/queue.h,v
retrieving revision 1.45
diff -u -p -r1.45 queue.h
--- queue.h 12 Jul 2018 14:22:54 -0000 1.45
+++ queue.h 25 Dec 2020 14:24:08 -0000
@@ -96,7 +96,7 @@ struct name {
\
struct type *slh_first; /* first element */ \
}
-#define SLIST_HEAD_INITIALIZER(head)
\
+#define SLIST_HEAD_INITIALIZER(head) \
{ NULL }
#define SLIST_ENTRY(type) \
@@ -107,43 +107,43 @@ struct {
\
/*
* Singly-linked List access methods.
*/
-#define SLIST_FIRST(head) ((head)->slh_first)
-#define SLIST_END(head) NULL
-#define SLIST_EMPTY(head) (SLIST_FIRST(head) == SLIST_END(head))
-#define SLIST_NEXT(elm, field) ((elm)->field.sle_next)
+#define SLIST_FIRST(head) ((head)->slh_first)
+#define SLIST_END(head) NULL
+#define SLIST_EMPTY(head) (SLIST_FIRST(head) == SLIST_END(head))
+#define SLIST_NEXT(elm, field) ((elm)->field.sle_next)
-#define SLIST_FOREACH(var, head, field)
\
+#define SLIST_FOREACH(var, head, field)
\
for((var) = SLIST_FIRST(head); \
(var) != SLIST_END(head); \
(var) = SLIST_NEXT(var, field))
-#define SLIST_FOREACH_SAFE(var, head, field, tvar)
\
- for ((var) = SLIST_FIRST(head); \
+#define SLIST_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = SLIST_FIRST(head); \
(var) && ((tvar) = SLIST_NEXT(var, field), 1); \
(var) = (tvar))
/*
* Singly-linked List functions.
*/
-#define SLIST_INIT(head) {
\
+#define SLIST_INIT(head) { \
SLIST_FIRST(head) = SLIST_END(head); \
}
-#define SLIST_INSERT_AFTER(slistelm, elm, field) do {
\
+#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \
(elm)->field.sle_next = (slistelm)->field.sle_next; \
(slistelm)->field.sle_next = (elm); \
} while (0)
-#define SLIST_INSERT_HEAD(head, elm, field) do {
\
+#define SLIST_INSERT_HEAD(head, elm, field) do { \
(elm)->field.sle_next = (head)->slh_first; \
(head)->slh_first = (elm); \
} while (0)
-#define SLIST_REMOVE_AFTER(elm, field) do {
\
+#define SLIST_REMOVE_AFTER(elm, field) do { \
(elm)->field.sle_next = (elm)->field.sle_next->field.sle_next; \
} while (0)
-#define SLIST_REMOVE_HEAD(head, field) do {
\
+#define SLIST_REMOVE_HEAD(head, field) do { \
(head)->slh_first = (head)->slh_first->field.sle_next; \
} while (0)
@@ -181,25 +181,25 @@ struct {
\
/*
* List access methods.
*/
-#define LIST_FIRST(head) ((head)->lh_first)
-#define LIST_END(head) NULL
-#define LIST_EMPTY(head) (LIST_FIRST(head) ==
LIST_END(head))
-#define LIST_NEXT(elm, field) ((elm)->field.le_next)
+#define LIST_FIRST(head) ((head)->lh_first)
+#define LIST_END(head) NULL
+#define LIST_EMPTY(head) (LIST_FIRST(head) == LIST_END(head))
+#define LIST_NEXT(elm, field) ((elm)->field.le_next)
#define LIST_FOREACH(var, head, field) \
for((var) = LIST_FIRST(head); \
(var)!= LIST_END(head); \
(var) = LIST_NEXT(var, field))
-#define LIST_FOREACH_SAFE(var, head, field, tvar)
\
- for ((var) = LIST_FIRST(head); \
+#define LIST_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = LIST_FIRST(head); \
(var) && ((tvar) = LIST_NEXT(var, field), 1); \
(var) = (tvar))
/*
* List functions.
*/
-#define LIST_INIT(head) do {
\
+#define LIST_INIT(head) do { \
LIST_FIRST(head) = LIST_END(head); \
} while (0)
@@ -211,7 +211,7 @@ struct {
\
(elm)->field.le_prev = &(listelm)->field.le_next; \
} while (0)
-#define LIST_INSERT_BEFORE(listelm, elm, field) do {
\
+#define LIST_INSERT_BEFORE(listelm, elm, field) do { \
(elm)->field.le_prev = (listelm)->field.le_prev; \
(elm)->field.le_next = (listelm); \
*(listelm)->field.le_prev = (elm); \
@@ -245,82 +245,84 @@ struct {
\
} while (0)
/*
- * Simple queue definitions.
+ * Singly-linked tail queue definitions.
*/
-#define SIMPLEQ_HEAD(name, type) \
+#define STAILQ_HEAD(name, type)
\
struct name { \
- struct type *sqh_first; /* first element */ \
- struct type **sqh_last; /* addr of last next element */ \
+ struct type *stqh_first; /* first element */ \
+ struct type **stqh_last; /* addr of last next element */ \
}
-#define SIMPLEQ_HEAD_INITIALIZER(head) \
- { NULL, &(head).sqh_first }
+#define STAILQ_HEAD_INITIALIZER(head) \
+ { NULL, &(head).stqh_first }
-#define SIMPLEQ_ENTRY(type) \
+#define STAILQ_ENTRY(type) \
struct { \
- struct type *sqe_next; /* next element */ \
+ struct type *stqe_next; /* next element */ \
}
/*
- * Simple queue access methods.
+ * Singly-linked tail queue access methods.
*/
-#define SIMPLEQ_FIRST(head) ((head)->sqh_first)
-#define SIMPLEQ_END(head) NULL
-#define SIMPLEQ_EMPTY(head) (SIMPLEQ_FIRST(head) ==
SIMPLEQ_END(head))
-#define SIMPLEQ_NEXT(elm, field) ((elm)->field.sqe_next)
-
-#define SIMPLEQ_FOREACH(var, head, field) \
- for((var) = SIMPLEQ_FIRST(head); \
- (var) != SIMPLEQ_END(head); \
- (var) = SIMPLEQ_NEXT(var, field))
-
-#define SIMPLEQ_FOREACH_SAFE(var, head, field, tvar)
\
- for ((var) = SIMPLEQ_FIRST(head); \
- (var) && ((tvar) = SIMPLEQ_NEXT(var, field), 1); \
+#define STAILQ_FIRST(head) ((head)->stqh_first)
+#define STAILQ_END(head) NULL
+#define STAILQ_EMPTY(head) (STAILQ_FIRST(head) == STAILQ_END(head))
+#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next)
+
+#define STAILQ_FOREACH(var, head, field) \
+ for((var) = STAILQ_FIRST(head); \
+ (var) != STAILQ_END(head); \
+ (var) = STAILQ_NEXT(var, field))
+
+#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \
+ for ((var) = STAILQ_FIRST(head); \
+ (var) && ((tvar) = STAILQ_NEXT(var, field), 1); \
(var) = (tvar))
/*
- * Simple queue functions.
+ * Singly-linked tail queue functions.
*/
-#define SIMPLEQ_INIT(head) do {
\
- (head)->sqh_first = NULL; \
- (head)->sqh_last = &(head)->sqh_first; \
+#define STAILQ_INIT(head) do { \
+ (head)->stqh_first = NULL; \
+ (head)->stqh_last = &(head)->stqh_first; \
} while (0)
-#define SIMPLEQ_INSERT_HEAD(head, elm, field) do { \
- if (((elm)->field.sqe_next = (head)->sqh_first) == NULL) \
- (head)->sqh_last = &(elm)->field.sqe_next; \
- (head)->sqh_first = (elm); \
+#define STAILQ_INSERT_HEAD(head, elm, field) do { \
+ if (((elm)->field.stqe_next = (head)->stqh_first) == NULL) \
+ (head)->stqh_last = &(elm)->field.stqe_next; \
+ (head)->stqh_first = (elm); \
} while (0)
-#define SIMPLEQ_INSERT_TAIL(head, elm, field) do { \
- (elm)->field.sqe_next = NULL; \
- *(head)->sqh_last = (elm); \
- (head)->sqh_last = &(elm)->field.sqe_next; \
+#define STAILQ_INSERT_TAIL(head, elm, field) do { \
+ (elm)->field.stqe_next = NULL; \
+ *(head)->stqh_last = (elm); \
+ (head)->stqh_last = &(elm)->field.stqe_next; \
} while (0)
-#define SIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do { \
- if (((elm)->field.sqe_next = (listelm)->field.sqe_next) == NULL)\
- (head)->sqh_last = &(elm)->field.sqe_next; \
- (listelm)->field.sqe_next = (elm); \
+#define STAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
+ if (((elm)->field.stqe_next = \
+ (listelm)->field.stqe_next) == NULL) \
+ (head)->stqh_last = &(elm)->field.stqe_next; \
+ (listelm)->field.stqe_next = (elm); \
} while (0)
-#define SIMPLEQ_REMOVE_HEAD(head, field) do { \
- if (((head)->sqh_first = (head)->sqh_first->field.sqe_next) == NULL) \
- (head)->sqh_last = &(head)->sqh_first; \
+#define STAILQ_REMOVE_HEAD(head, field) do { \
+ if (((head)->stqh_first = \
+ (head)->stqh_first->field.stqe_next) == NULL) \
+ (head)->stqh_last = &(head)->stqh_first; \
} while (0)
-#define SIMPLEQ_REMOVE_AFTER(head, elm, field) do { \
- if (((elm)->field.sqe_next = (elm)->field.sqe_next->field.sqe_next) \
- == NULL) \
- (head)->sqh_last = &(elm)->field.sqe_next; \
+#define STAILQ_REMOVE_AFTER(head, elm, field) do { \
+ if (((elm)->field.stqe_next = \
+ (elm)->field.stqe_next->field.stqe_next) == NULL) \
+ (head)->stqh_last = &(elm)->field.stqe_next; \
} while (0)
-#define SIMPLEQ_CONCAT(head1, head2) do { \
- if (!SIMPLEQ_EMPTY((head2))) { \
- *(head1)->sqh_last = (head2)->sqh_first; \
- (head1)->sqh_last = (head2)->sqh_last; \
- SIMPLEQ_INIT((head2)); \
+#define STAILQ_CONCAT(head1, head2) do { \
+ if (!STAILQ_EMPTY((head2))) { \
+ *(head1)->stqh_last = (head2)->stqh_first; \
+ (head1)->stqh_last = (head2)->stqh_last; \
+ STAILQ_INIT((head2)); \
} \
} while (0)
@@ -344,18 +346,17 @@ struct {
\
*/
#define XSIMPLEQ_XOR(head, ptr) ((__typeof(ptr))((head)->sqx_cookie
^ \
(unsigned long)(ptr)))
-#define XSIMPLEQ_FIRST(head) XSIMPLEQ_XOR(head,
((head)->sqx_first))
-#define XSIMPLEQ_END(head) NULL
-#define XSIMPLEQ_EMPTY(head) (XSIMPLEQ_FIRST(head) ==
XSIMPLEQ_END(head))
-#define XSIMPLEQ_NEXT(head, elm, field) XSIMPLEQ_XOR(head,
((elm)->field.sqx_next))
-
+#define XSIMPLEQ_FIRST(head) XSIMPLEQ_XOR(head, ((head)->sqx_first))
+#define XSIMPLEQ_END(head) NULL
+#define XSIMPLEQ_EMPTY(head) (XSIMPLEQ_FIRST(head) == XSIMPLEQ_END(head))
+#define XSIMPLEQ_NEXT(head, elm, field) XSIMPLEQ_XOR(head,
((elm)->field.sqx_next))
#define XSIMPLEQ_FOREACH(var, head, field) \
for ((var) = XSIMPLEQ_FIRST(head); \
(var) != XSIMPLEQ_END(head); \
(var) = XSIMPLEQ_NEXT(head, var, field))
-#define XSIMPLEQ_FOREACH_SAFE(var, head, field, tvar)
\
+#define XSIMPLEQ_FOREACH_SAFE(var, head, field, tvar) \
for ((var) = XSIMPLEQ_FIRST(head); \
(var) && ((tvar) = XSIMPLEQ_NEXT(head, var, field), 1); \
(var) = (tvar))
@@ -363,7 +364,7 @@ struct {
\
/*
* XOR Simple queue functions.
*/
-#define XSIMPLEQ_INIT(head) do {
\
+#define XSIMPLEQ_INIT(head) do { \
arc4random_buf(&(head)->sqx_cookie, sizeof((head)->sqx_cookie)); \
(head)->sqx_first = XSIMPLEQ_XOR(head, NULL); \
(head)->sqx_last = XSIMPLEQ_XOR(head, &(head)->sqx_first); \
@@ -403,7 +404,6 @@ struct {
\
XSIMPLEQ_XOR(head, &(elm)->field.sqx_next); \
} while (0)
-
/*
* Tail queue definitions.
*/
@@ -425,15 +425,15 @@ struct {
\
/*
* Tail queue access methods.
*/
-#define TAILQ_FIRST(head) ((head)->tqh_first)
-#define TAILQ_END(head) NULL
-#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
+#define TAILQ_FIRST(head) ((head)->tqh_first)
+#define TAILQ_END(head) NULL
+#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
#define TAILQ_LAST(head, headname) \
(*(((struct headname *)((head)->tqh_last))->tqh_last))
/* XXX */
#define TAILQ_PREV(elm, headname, field) \
(*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))
-#define TAILQ_EMPTY(head)
\
+#define TAILQ_EMPTY(head) \
(TAILQ_FIRST(head) == TAILQ_END(head))
#define TAILQ_FOREACH(var, head, field)
\
@@ -441,7 +441,7 @@ struct {
\
(var) != TAILQ_END(head); \
(var) = TAILQ_NEXT(var, field))
-#define TAILQ_FOREACH_SAFE(var, head, field, tvar)
\
+#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \
for ((var) = TAILQ_FIRST(head); \
(var) != TAILQ_END(head) && \
((tvar) = TAILQ_NEXT(var, field), 1); \
@@ -453,7 +453,7 @@ struct {
\
(var) != TAILQ_END(head); \
(var) = TAILQ_PREV(var, headname, field))
-#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar)
\
+#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \
for ((var) = TAILQ_LAST(head, headname); \
(var) != TAILQ_END(head) && \
((tvar) = TAILQ_PREV(var, headname, field), 1); \
@@ -462,7 +462,7 @@ struct {
\
/*
* Tail queue functions.
*/
-#define TAILQ_INIT(head) do {
\
+#define TAILQ_INIT(head) do { \
(head)->tqh_first = NULL; \
(head)->tqh_last = &(head)->tqh_first; \
} while (0)
@@ -494,7 +494,7 @@ struct {
\
(elm)->field.tqe_prev = &(listelm)->field.tqe_next; \
} while (0)
-#define TAILQ_INSERT_BEFORE(listelm, elm, field) do {
\
+#define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \
(elm)->field.tqe_prev = (listelm)->field.tqe_prev; \
(elm)->field.tqe_next = (listelm); \
*(listelm)->field.tqe_prev = (elm); \
@@ -532,5 +532,33 @@ struct {
\
TAILQ_INIT((head2)); \
} \
} while (0)
+
+/*
+ * XXX
+ * Temporarily aliases SIMPLEQ_* to STAILQ_*.
+ * To be removed as soon as all programs have switched to the new name.
+ */
+#define SIMPLEQ_HEAD(name, type) STAILQ_HEAD(name, type)
+#define SIMPLEQ_HEAD_INITIALIZER(head) STAILQ_HEAD_INITIALIZER(head)
+#define SIMPLEQ_ENTRY(type) STAILQ_ENTRY(type)
+#define SIMPLEQ_FIRST(head) STAILQ_FIRST(head)
+#define SIMPLEQ_END(head) STAILQ_END(head)
+#define SIMPLEQ_EMPTY(head) STAILQ_EMPTY(head)
+#define SIMPLEQ_NEXT(elm, field) STAILQ_NEXT(elm, field)
+#define SIMPLEQ_FOREACH(var, head, field) \
+ STAILQ_FOREACH(var, head, field)
+#define SIMPLEQ_FOREACH_SAFE(var, head, field, tvar) \
+ STAILQ_FOREACH_SAFE(var, head, field, tvar)
+#define SIMPLEQ_INIT(head) STAILQ_INIT(head)
+#define SIMPLEQ_INSERT_HEAD(head, elm, field) \
+ STAILQ_INSERT_HEAD(head, elm, field)
+#define SIMPLEQ_INSERT_TAIL(head, elm, field) \
+ STAILQ_INSERT_TAIL(head, elm, field)
+#define SIMPLEQ_INSERT_AFTER(head, listelm, elm, field) \
+ STAILQ_INSERT_AFTER(head, listelm, elm, field)
+#define SIMPLEQ_REMOVE_HEAD(head, field) STAILQ_REMOVE_HEAD(head, field)
+#define SIMPLEQ_REMOVE_AFTER(head, elm, field) \
+ STAILQ_REMOVE_AFTER(head, elm, field)
+#define SIMPLEQ_CONCAT(head1, head2) STAILQ_CONCAT(head1, head2)
#endif /* !_SYS_QUEUE_H_ */
Index: sched.h
===================================================================
RCS file: /cvs/src/sys/sys/sched.h,v
retrieving revision 1.56
diff -u -p -r1.56 sched.h
--- sched.h 21 Oct 2019 10:24:01 -0000 1.56
+++ sched.h 25 Dec 2020 14:24:08 -0000
@@ -114,7 +114,7 @@ struct schedstate_percpu {
volatile uint32_t spc_whichqs;
volatile u_int spc_spinning; /* this cpu is currently spinning */
- SIMPLEQ_HEAD(, smr_entry) spc_deferred; /* deferred smr calls */
+ STAILQ_HEAD(, smr_entry) spc_deferred; /* deferred smr calls */
u_int spc_ndeferred; /* number of deferred smr calls */
u_int spc_smrdepth; /* level of smr nesting */
u_char spc_smrexpedite; /* if set, dispatch smr entries
Index: smr.h
===================================================================
RCS file: /cvs/src/sys/sys/smr.h,v
retrieving revision 1.8
diff -u -p -r1.8 smr.h
--- smr.h 29 Sep 2020 16:40:33 -0000 1.8
+++ smr.h 25 Dec 2020 14:24:08 -0000
@@ -22,12 +22,12 @@
#include <sys/queue.h>
struct smr_entry {
- SIMPLEQ_ENTRY(smr_entry) smr_list;
+ STAILQ_ENTRY(smr_entry) smr_list;
void (*smr_func)(void *);
void *smr_arg;
};
-SIMPLEQ_HEAD(smr_entry_list, smr_entry);
+STAILQ_HEAD(smr_entry_list, smr_entry);
#ifdef _KERNEL