diff options
| author | whitespace / reindent <invalid@invalid.invalid> | 2017-07-17 14:03:14 +0200 | 
|---|---|---|
| committer | whitespace / reindent <invalid@invalid.invalid> | 2017-07-17 14:04:07 +0200 | 
| commit | d62a17aedeb0eebdba98238874bb13d62c48dbf9 (patch) | |
| tree | 3b319b1d61c8b85b4d1f06adf8b844bb8a9b5107 /lib/openbsd-queue.h | |
| parent | 888ac268a0077fc9ebd1218cec6ae472af0bfc40 (diff) | |
*: reindentreindent-master-after
indent.py `git ls-files | pcregrep '\.[ch]$' | pcregrep -v '^(ldpd|babeld|nhrpd)/'`
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'lib/openbsd-queue.h')
| -rw-r--r-- | lib/openbsd-queue.h | 740 | 
1 files changed, 391 insertions, 349 deletions
diff --git a/lib/openbsd-queue.h b/lib/openbsd-queue.h index 5e81fdd13d..e09cc3d4e5 100644 --- a/lib/openbsd-queue.h +++ b/lib/openbsd-queue.h @@ -32,7 +32,7 @@   *	@(#)queue.h	8.5 (Berkeley) 8/20/94   */ -#ifndef	_SYS_QUEUE_H_ +#ifndef _SYS_QUEUE_H_  #define	_SYS_QUEUE_H_  /* @@ -88,18 +88,20 @@  /*   * Singly-linked List definitions.   */ -#define SLIST_HEAD(name, type)						\ -struct name {								\ -	struct type *slh_first;	/* first element */			\ -} +#define SLIST_HEAD(name, type)                                                 \ +	struct name {                                                          \ +		struct type *slh_first; /* first element */                    \ +	} -#define	SLIST_HEAD_INITIALIZER(head)					\ -	{ NULL } +#define SLIST_HEAD_INITIALIZER(head)                                           \ +	{                                                                      \ +		NULL                                                           \ +	} -#define SLIST_ENTRY(type)						\ -struct {								\ -	struct type *sle_next;	/* next element */			\ -} +#define SLIST_ENTRY(type)                                                      \ +	struct {                                                               \ +		struct type *sle_next; /* next element */                      \ +	}  /*   * Singly-linked List access methods. @@ -109,71 +111,77 @@ struct {								\  #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)					\ -	for((var) = SLIST_FIRST(head);					\ -	    (var) != SLIST_END(head);					\ -	    (var) = SLIST_NEXT(var, 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);				\ -	    (var) && ((tvar) = SLIST_NEXT(var, field), 1);		\ -	    (var) = (tvar)) +#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) {						\ -	SLIST_FIRST(head) = SLIST_END(head);				\ -} - -#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 {			\ -	(elm)->field.sle_next = (head)->slh_first;			\ -	(head)->slh_first = (elm);					\ -} while (0) - -#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 {				\ -	(head)->slh_first = (head)->slh_first->field.sle_next;		\ -} while (0) - -#define SLIST_REMOVE(head, elm, type, field) do {			\ -	if ((head)->slh_first == (elm)) {				\ -		SLIST_REMOVE_HEAD((head), field);			\ -	} else {							\ -		struct type *curelm = (head)->slh_first;		\ -									\ -		while (curelm->field.sle_next != (elm))			\ -			curelm = curelm->field.sle_next;		\ -		curelm->field.sle_next =				\ -		    curelm->field.sle_next->field.sle_next;		\ -	}								\ -	_Q_INVALIDATE((elm)->field.sle_next);				\ -} while (0) +#define SLIST_INIT(head)                                                       \ +	{                                                                      \ +		SLIST_FIRST(head) = SLIST_END(head);                           \ +	} + +#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 {                                                                   \ +		(elm)->field.sle_next = (head)->slh_first;                     \ +		(head)->slh_first = (elm);                                     \ +	} while (0) + +#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 {                                                                   \ +		(head)->slh_first = (head)->slh_first->field.sle_next;         \ +	} while (0) + +#define SLIST_REMOVE(head, elm, type, field)                                   \ +	do {                                                                   \ +		if ((head)->slh_first == (elm)) {                              \ +			SLIST_REMOVE_HEAD((head), field);                      \ +		} else {                                                       \ +			struct type *curelm = (head)->slh_first;               \ +                                                                               \ +			while (curelm->field.sle_next != (elm))                \ +				curelm = curelm->field.sle_next;               \ +			curelm->field.sle_next =                               \ +				curelm->field.sle_next->field.sle_next;        \ +		}                                                              \ +		_Q_INVALIDATE((elm)->field.sle_next);                          \ +	} while (0)  /*   * List definitions.   */ -#define LIST_HEAD(name, type)						\ -struct name {								\ -	struct type *lh_first;	/* first element */			\ -} - -#define LIST_HEAD_INITIALIZER(head)					\ -	{ NULL } - -#define LIST_ENTRY(type)						\ -struct {								\ -	struct type *le_next;	/* next element */			\ -	struct type **le_prev;	/* address of previous next element */	\ -} +#define LIST_HEAD(name, type)                                                  \ +	struct name {                                                          \ +		struct type *lh_first; /* first element */                     \ +	} + +#define LIST_HEAD_INITIALIZER(head)                                            \ +	{                                                                      \ +		NULL                                                           \ +	} + +#define LIST_ENTRY(type)                                                       \ +	struct {                                                               \ +		struct type *le_next;  /* next element */                      \ +		struct type **le_prev; /* address of previous next element */  \ +	}  /*   * List access methods. @@ -183,80 +191,87 @@ struct {								\  #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(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);				\ -	    (var) && ((tvar) = LIST_NEXT(var, field), 1);		\ -	    (var) = (tvar)) +#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 {						\ -	LIST_FIRST(head) = LIST_END(head);				\ -} while (0) - -#define LIST_INSERT_AFTER(listelm, elm, field) do {			\ -	if (((elm)->field.le_next = (listelm)->field.le_next) != NULL)	\ -		(listelm)->field.le_next->field.le_prev =		\ -		    &(elm)->field.le_next;				\ -	(listelm)->field.le_next = (elm);				\ -	(elm)->field.le_prev = &(listelm)->field.le_next;		\ -} while (0) - -#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);				\ -	(listelm)->field.le_prev = &(elm)->field.le_next;		\ -} while (0) - -#define LIST_INSERT_HEAD(head, elm, field) do {				\ -	if (((elm)->field.le_next = (head)->lh_first) != NULL)		\ -		(head)->lh_first->field.le_prev = &(elm)->field.le_next;\ -	(head)->lh_first = (elm);					\ -	(elm)->field.le_prev = &(head)->lh_first;			\ -} while (0) - -#define LIST_REMOVE(elm, field) do {					\ -	if ((elm)->field.le_next != NULL)				\ -		(elm)->field.le_next->field.le_prev =			\ -		    (elm)->field.le_prev;				\ -	*(elm)->field.le_prev = (elm)->field.le_next;			\ -	_Q_INVALIDATE((elm)->field.le_prev);				\ -	_Q_INVALIDATE((elm)->field.le_next);				\ -} while (0) - -#define LIST_REPLACE(elm, elm2, field) do {				\ -	if (((elm2)->field.le_next = (elm)->field.le_next) != NULL)	\ -		(elm2)->field.le_next->field.le_prev =			\ -		    &(elm2)->field.le_next;				\ -	(elm2)->field.le_prev = (elm)->field.le_prev;			\ -	*(elm2)->field.le_prev = (elm2);				\ -	_Q_INVALIDATE((elm)->field.le_prev);				\ -	_Q_INVALIDATE((elm)->field.le_next);				\ -} while (0) +#define LIST_INIT(head)                                                        \ +	do {                                                                   \ +		LIST_FIRST(head) = LIST_END(head);                             \ +	} while (0) + +#define LIST_INSERT_AFTER(listelm, elm, field)                                 \ +	do {                                                                   \ +		if (((elm)->field.le_next = (listelm)->field.le_next) != NULL) \ +			(listelm)->field.le_next->field.le_prev =              \ +				&(elm)->field.le_next;                         \ +		(listelm)->field.le_next = (elm);                              \ +		(elm)->field.le_prev = &(listelm)->field.le_next;              \ +	} while (0) + +#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);                             \ +		(listelm)->field.le_prev = &(elm)->field.le_next;              \ +	} while (0) + +#define LIST_INSERT_HEAD(head, elm, field)                                     \ +	do {                                                                   \ +		if (((elm)->field.le_next = (head)->lh_first) != NULL)         \ +			(head)->lh_first->field.le_prev =                      \ +				&(elm)->field.le_next;                         \ +		(head)->lh_first = (elm);                                      \ +		(elm)->field.le_prev = &(head)->lh_first;                      \ +	} while (0) + +#define LIST_REMOVE(elm, field)                                                \ +	do {                                                                   \ +		if ((elm)->field.le_next != NULL)                              \ +			(elm)->field.le_next->field.le_prev =                  \ +				(elm)->field.le_prev;                          \ +		*(elm)->field.le_prev = (elm)->field.le_next;                  \ +		_Q_INVALIDATE((elm)->field.le_prev);                           \ +		_Q_INVALIDATE((elm)->field.le_next);                           \ +	} while (0) + +#define LIST_REPLACE(elm, elm2, field)                                         \ +	do {                                                                   \ +		if (((elm2)->field.le_next = (elm)->field.le_next) != NULL)    \ +			(elm2)->field.le_next->field.le_prev =                 \ +				&(elm2)->field.le_next;                        \ +		(elm2)->field.le_prev = (elm)->field.le_prev;                  \ +		*(elm2)->field.le_prev = (elm2);                               \ +		_Q_INVALIDATE((elm)->field.le_prev);                           \ +		_Q_INVALIDATE((elm)->field.le_next);                           \ +	} while (0)  /*   * Simple queue definitions.   */ -#define SIMPLEQ_HEAD(name, type)					\ -struct name {								\ -	struct type *sqh_first;	/* first element */			\ -	struct type **sqh_last;	/* addr of last next element */		\ -} - -#define SIMPLEQ_HEAD_INITIALIZER(head)					\ -	{ NULL, &(head).sqh_first } - -#define SIMPLEQ_ENTRY(type)						\ -struct {								\ -	struct type *sqe_next;	/* next element */			\ -} +#define SIMPLEQ_HEAD(name, type)                                               \ +	struct name {                                                          \ +		struct type *sqh_first; /* first element */                    \ +		struct type **sqh_last; /* addr of last next element */        \ +	} + +#define SIMPLEQ_HEAD_INITIALIZER(head)                                         \ +	{                                                                      \ +		NULL, &(head).sqh_first                                        \ +	} + +#define SIMPLEQ_ENTRY(type)                                                    \ +	struct {                                                               \ +		struct type *sqe_next; /* next element */                      \ +	}  /*   * Simple queue access methods. @@ -266,158 +281,179 @@ struct {								\  #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(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);		\ -	    (var) = (tvar)) +#define SIMPLEQ_FOREACH_SAFE(var, head, field, tvar)                           \ +	for ((var) = SIMPLEQ_FIRST(head);                                      \ +	     (var) && ((tvar) = SIMPLEQ_NEXT(var, field), 1); (var) = (tvar))  /*   * Simple queue functions.   */ -#define	SIMPLEQ_INIT(head) do {						\ -	(head)->sqh_first = NULL;					\ -	(head)->sqh_last = &(head)->sqh_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);					\ -} 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;			\ -} 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);				\ -} 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;			\ -} 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;		\ -} 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));					\ -	}								\ -} while (0) +#define SIMPLEQ_INIT(head)                                                     \ +	do {                                                                   \ +		(head)->sqh_first = NULL;                                      \ +		(head)->sqh_last = &(head)->sqh_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);                                     \ +	} 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;                     \ +	} 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);                             \ +	} 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;                 \ +	} 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;             \ +	} 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));                                 \ +		}                                                              \ +	} while (0)  /*   * XOR Simple queue definitions.   */ -#define XSIMPLEQ_HEAD(name, type)					\ -struct name {								\ -	struct type *sqx_first;	/* first element */			\ -	struct type **sqx_last;	/* addr of last next element */		\ -	unsigned long sqx_cookie;					\ -} - -#define XSIMPLEQ_ENTRY(type)						\ -struct {								\ -	struct type *sqx_next;	/* next element */			\ -} +#define XSIMPLEQ_HEAD(name, type)                                              \ +	struct name {                                                          \ +		struct type *sqx_first; /* first element */                    \ +		struct type **sqx_last; /* addr of last next element */        \ +		unsigned long sqx_cookie;                                      \ +	} + +#define XSIMPLEQ_ENTRY(type)                                                   \ +	struct {                                                               \ +		struct type *sqx_next; /* next element */                      \ +	}  /*   * XOR Simple queue access methods.   */ -#define XSIMPLEQ_XOR(head, ptr)	    ((__typeof(ptr))((head)->sqx_cookie ^ \ -					(unsigned long)(ptr))) +#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_FOREACH(var, head, field)                                     \ +	for ((var) = XSIMPLEQ_FIRST(head); (var) != XSIMPLEQ_END(head);        \ +	     (var) = XSIMPLEQ_NEXT(head, var, field)) -#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)			\ -	for ((var) = XSIMPLEQ_FIRST(head);				\ -	    (var) && ((tvar) = XSIMPLEQ_NEXT(head, var, field), 1);	\ -	    (var) = (tvar)) +#define XSIMPLEQ_FOREACH_SAFE(var, head, field, tvar)                          \ +	for ((var) = XSIMPLEQ_FIRST(head);                                     \ +	     (var) && ((tvar) = XSIMPLEQ_NEXT(head, var, field), 1);           \ +	     (var) = (tvar))  /*   * XOR Simple queue functions.   */ -#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);	\ -} while (0) - -#define XSIMPLEQ_INSERT_HEAD(head, elm, field) do {			\ -	if (((elm)->field.sqx_next = (head)->sqx_first) ==		\ -	    XSIMPLEQ_XOR(head, NULL))					\ +#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);     \ +	} while (0) + +#define XSIMPLEQ_INSERT_HEAD(head, elm, field)                                 \ +	do {                                                                   \ +		if (((elm)->field.sqx_next = (head)->sqx_first)                \ +		    == XSIMPLEQ_XOR(head, NULL))                               \ +			(head)->sqx_last =                                     \ +				XSIMPLEQ_XOR(head, &(elm)->field.sqx_next);    \ +		(head)->sqx_first = XSIMPLEQ_XOR(head, (elm));                 \ +	} while (0) + +#define XSIMPLEQ_INSERT_TAIL(head, elm, field)                                 \ +	do {                                                                   \ +		(elm)->field.sqx_next = XSIMPLEQ_XOR(head, NULL);              \ +		*(XSIMPLEQ_XOR(head, (head)->sqx_last)) =                      \ +			XSIMPLEQ_XOR(head, (elm));                             \  		(head)->sqx_last = XSIMPLEQ_XOR(head, &(elm)->field.sqx_next); \ -	(head)->sqx_first = XSIMPLEQ_XOR(head, (elm));			\ -} while (0) - -#define XSIMPLEQ_INSERT_TAIL(head, elm, field) do {			\ -	(elm)->field.sqx_next = XSIMPLEQ_XOR(head, NULL);		\ -	*(XSIMPLEQ_XOR(head, (head)->sqx_last)) = XSIMPLEQ_XOR(head, (elm)); \ -	(head)->sqx_last = XSIMPLEQ_XOR(head, &(elm)->field.sqx_next);	\ -} while (0) - -#define XSIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do {		\ -	if (((elm)->field.sqx_next = (listelm)->field.sqx_next) ==	\ -	    XSIMPLEQ_XOR(head, NULL))					\ -		(head)->sqx_last = XSIMPLEQ_XOR(head, &(elm)->field.sqx_next); \ -	(listelm)->field.sqx_next = XSIMPLEQ_XOR(head, (elm));		\ -} while (0) - -#define XSIMPLEQ_REMOVE_HEAD(head, field) do {				\ -	if (((head)->sqx_first = XSIMPLEQ_XOR(head,			\ -	    (head)->sqx_first)->field.sqx_next) == XSIMPLEQ_XOR(head, NULL)) \ -		(head)->sqx_last = XSIMPLEQ_XOR(head, &(head)->sqx_first); \ -} while (0) - -#define XSIMPLEQ_REMOVE_AFTER(head, elm, field) do {			\ -	if (((elm)->field.sqx_next = XSIMPLEQ_XOR(head,			\ -	    (elm)->field.sqx_next)->field.sqx_next)			\ -	    == XSIMPLEQ_XOR(head, NULL))				\ -		(head)->sqx_last = 					\ -		    XSIMPLEQ_XOR(head, &(elm)->field.sqx_next);		\ -} while (0) +	} while (0) + +#define XSIMPLEQ_INSERT_AFTER(head, listelm, elm, field)                       \ +	do {                                                                   \ +		if (((elm)->field.sqx_next = (listelm)->field.sqx_next)        \ +		    == XSIMPLEQ_XOR(head, NULL))                               \ +			(head)->sqx_last =                                     \ +				XSIMPLEQ_XOR(head, &(elm)->field.sqx_next);    \ +		(listelm)->field.sqx_next = XSIMPLEQ_XOR(head, (elm));         \ +	} while (0) + +#define XSIMPLEQ_REMOVE_HEAD(head, field)                                      \ +	do {                                                                   \ +		if (((head)->sqx_first = XSIMPLEQ_XOR(head, (head)->sqx_first) \ +						 ->field.sqx_next)             \ +		    == XSIMPLEQ_XOR(head, NULL))                               \ +			(head)->sqx_last =                                     \ +				XSIMPLEQ_XOR(head, &(head)->sqx_first);        \ +	} while (0) + +#define XSIMPLEQ_REMOVE_AFTER(head, elm, field)                                \ +	do {                                                                   \ +		if (((elm)->field.sqx_next =                                   \ +			     XSIMPLEQ_XOR(head, (elm)->field.sqx_next)         \ +				     ->field.sqx_next)                         \ +		    == XSIMPLEQ_XOR(head, NULL))                               \ +			(head)->sqx_last =                                     \ +				XSIMPLEQ_XOR(head, &(elm)->field.sqx_next);    \ +	} while (0)  /*   * Tail queue definitions.   */ -#define TAILQ_HEAD(name, type)						\ -struct name {								\ -	struct type *tqh_first;	/* first element */			\ -	struct type **tqh_last;	/* addr of last next element */		\ -} - -#define TAILQ_HEAD_INITIALIZER(head)					\ -	{ NULL, &(head).tqh_first } - -#define TAILQ_ENTRY(type)						\ -struct {								\ -	struct type *tqe_next;	/* next element */			\ -	struct type **tqe_prev;	/* address of previous next element */	\ -} +#define TAILQ_HEAD(name, type)                                                 \ +	struct name {                                                          \ +		struct type *tqh_first; /* first element */                    \ +		struct type **tqh_last; /* addr of last next element */        \ +	} + +#define TAILQ_HEAD_INITIALIZER(head)                                           \ +	{                                                                      \ +		NULL, &(head).tqh_first                                        \ +	} + +#define TAILQ_ENTRY(type)                                                      \ +	struct {                                                               \ +		struct type *tqe_next;  /* next element */                     \ +		struct type **tqe_prev; /* address of previous next element */ \ +	}  /*   * Tail queue access methods. @@ -425,109 +461,115 @@ struct {								\  #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)					\ +#define TAILQ_LAST(head, headname)                                             \  	(*(((struct headname *)((head)->tqh_last))->tqh_last))  /* XXX */ -#define TAILQ_PREV(elm, headname, field)				\ +#define TAILQ_PREV(elm, headname, field)                                       \  	(*(((struct headname *)((elm)->field.tqe_prev))->tqh_last)) -#define	TAILQ_EMPTY(head)						\ -	(TAILQ_FIRST(head) == TAILQ_END(head)) +#define TAILQ_EMPTY(head) (TAILQ_FIRST(head) == TAILQ_END(head)) -#define TAILQ_FOREACH(var, head, field)					\ -	for((var) = TAILQ_FIRST(head);					\ -	    (var) != TAILQ_END(head);					\ -	    (var) = TAILQ_NEXT(var, field)) +#define TAILQ_FOREACH(var, head, field)                                        \ +	for ((var) = TAILQ_FIRST(head); (var) != TAILQ_END(head);              \ +	     (var) = TAILQ_NEXT(var, field)) -#define	TAILQ_FOREACH_SAFE(var, head, field, tvar)			\ -	for ((var) = TAILQ_FIRST(head);					\ -	    (var) != TAILQ_END(head) &&					\ -	    ((tvar) = TAILQ_NEXT(var, field), 1);			\ -	    (var) = (tvar)) +#define TAILQ_FOREACH_SAFE(var, head, field, tvar)                             \ +	for ((var) = TAILQ_FIRST(head);                                        \ +	     (var) != TAILQ_END(head) && ((tvar) = TAILQ_NEXT(var, field), 1); \ +	     (var) = (tvar)) -#define TAILQ_FOREACH_REVERSE(var, head, headname, field)		\ -	for((var) = TAILQ_LAST(head, headname);				\ -	    (var) != TAILQ_END(head);					\ -	    (var) = TAILQ_PREV(var, headname, field)) +#define TAILQ_FOREACH_REVERSE(var, head, headname, field)                      \ +	for ((var) = TAILQ_LAST(head, headname); (var) != TAILQ_END(head);     \ +	     (var) = TAILQ_PREV(var, headname, field)) -#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);		\ -	    (var) = (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);                \ +	     (var) = (tvar))  /*   * Tail queue functions.   */ -#define	TAILQ_INIT(head) do {						\ -	(head)->tqh_first = NULL;					\ -	(head)->tqh_last = &(head)->tqh_first;				\ -} while (0) - -#define TAILQ_INSERT_HEAD(head, elm, field) do {			\ -	if (((elm)->field.tqe_next = (head)->tqh_first) != NULL)	\ -		(head)->tqh_first->field.tqe_prev =			\ -		    &(elm)->field.tqe_next;				\ -	else								\ -		(head)->tqh_last = &(elm)->field.tqe_next;		\ -	(head)->tqh_first = (elm);					\ -	(elm)->field.tqe_prev = &(head)->tqh_first;			\ -} while (0) - -#define TAILQ_INSERT_TAIL(head, elm, field) do {			\ -	(elm)->field.tqe_next = NULL;					\ -	(elm)->field.tqe_prev = (head)->tqh_last;			\ -	*(head)->tqh_last = (elm);					\ -	(head)->tqh_last = &(elm)->field.tqe_next;			\ -} while (0) - -#define TAILQ_INSERT_AFTER(head, listelm, elm, field) do {		\ -	if (((elm)->field.tqe_next = (listelm)->field.tqe_next) != NULL)\ -		(elm)->field.tqe_next->field.tqe_prev =			\ -		    &(elm)->field.tqe_next;				\ -	else								\ -		(head)->tqh_last = &(elm)->field.tqe_next;		\ -	(listelm)->field.tqe_next = (elm);				\ -	(elm)->field.tqe_prev = &(listelm)->field.tqe_next;		\ -} while (0) - -#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);				\ -	(listelm)->field.tqe_prev = &(elm)->field.tqe_next;		\ -} while (0) - -#define TAILQ_REMOVE(head, elm, field) do {				\ -	if (((elm)->field.tqe_next) != NULL)				\ -		(elm)->field.tqe_next->field.tqe_prev =			\ -		    (elm)->field.tqe_prev;				\ -	else								\ -		(head)->tqh_last = (elm)->field.tqe_prev;		\ -	*(elm)->field.tqe_prev = (elm)->field.tqe_next;			\ -	_Q_INVALIDATE((elm)->field.tqe_prev);				\ -	_Q_INVALIDATE((elm)->field.tqe_next);				\ -} while (0) - -#define TAILQ_REPLACE(head, elm, elm2, field) do {			\ -	if (((elm2)->field.tqe_next = (elm)->field.tqe_next) != NULL)	\ -		(elm2)->field.tqe_next->field.tqe_prev =		\ -		    &(elm2)->field.tqe_next;				\ -	else								\ -		(head)->tqh_last = &(elm2)->field.tqe_next;		\ -	(elm2)->field.tqe_prev = (elm)->field.tqe_prev;			\ -	*(elm2)->field.tqe_prev = (elm2);				\ -	_Q_INVALIDATE((elm)->field.tqe_prev);				\ -	_Q_INVALIDATE((elm)->field.tqe_next);				\ -} while (0) - -#define TAILQ_CONCAT(head1, head2, field) do {				\ -	if (!TAILQ_EMPTY(head2)) {					\ -		*(head1)->tqh_last = (head2)->tqh_first;		\ -		(head2)->tqh_first->field.tqe_prev = (head1)->tqh_last;	\ -		(head1)->tqh_last = (head2)->tqh_last;			\ -		TAILQ_INIT((head2));					\ -	}								\ -} while (0) - -#endif	/* !_SYS_QUEUE_H_ */ +#define TAILQ_INIT(head)                                                       \ +	do {                                                                   \ +		(head)->tqh_first = NULL;                                      \ +		(head)->tqh_last = &(head)->tqh_first;                         \ +	} while (0) + +#define TAILQ_INSERT_HEAD(head, elm, field)                                    \ +	do {                                                                   \ +		if (((elm)->field.tqe_next = (head)->tqh_first) != NULL)       \ +			(head)->tqh_first->field.tqe_prev =                    \ +				&(elm)->field.tqe_next;                        \ +		else                                                           \ +			(head)->tqh_last = &(elm)->field.tqe_next;             \ +		(head)->tqh_first = (elm);                                     \ +		(elm)->field.tqe_prev = &(head)->tqh_first;                    \ +	} while (0) + +#define TAILQ_INSERT_TAIL(head, elm, field)                                    \ +	do {                                                                   \ +		(elm)->field.tqe_next = NULL;                                  \ +		(elm)->field.tqe_prev = (head)->tqh_last;                      \ +		*(head)->tqh_last = (elm);                                     \ +		(head)->tqh_last = &(elm)->field.tqe_next;                     \ +	} while (0) + +#define TAILQ_INSERT_AFTER(head, listelm, elm, field)                          \ +	do {                                                                   \ +		if (((elm)->field.tqe_next = (listelm)->field.tqe_next)        \ +		    != NULL)                                                   \ +			(elm)->field.tqe_next->field.tqe_prev =                \ +				&(elm)->field.tqe_next;                        \ +		else                                                           \ +			(head)->tqh_last = &(elm)->field.tqe_next;             \ +		(listelm)->field.tqe_next = (elm);                             \ +		(elm)->field.tqe_prev = &(listelm)->field.tqe_next;            \ +	} while (0) + +#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);                            \ +		(listelm)->field.tqe_prev = &(elm)->field.tqe_next;            \ +	} while (0) + +#define TAILQ_REMOVE(head, elm, field)                                         \ +	do {                                                                   \ +		if (((elm)->field.tqe_next) != NULL)                           \ +			(elm)->field.tqe_next->field.tqe_prev =                \ +				(elm)->field.tqe_prev;                         \ +		else                                                           \ +			(head)->tqh_last = (elm)->field.tqe_prev;              \ +		*(elm)->field.tqe_prev = (elm)->field.tqe_next;                \ +		_Q_INVALIDATE((elm)->field.tqe_prev);                          \ +		_Q_INVALIDATE((elm)->field.tqe_next);                          \ +	} while (0) + +#define TAILQ_REPLACE(head, elm, elm2, field)                                  \ +	do {                                                                   \ +		if (((elm2)->field.tqe_next = (elm)->field.tqe_next) != NULL)  \ +			(elm2)->field.tqe_next->field.tqe_prev =               \ +				&(elm2)->field.tqe_next;                       \ +		else                                                           \ +			(head)->tqh_last = &(elm2)->field.tqe_next;            \ +		(elm2)->field.tqe_prev = (elm)->field.tqe_prev;                \ +		*(elm2)->field.tqe_prev = (elm2);                              \ +		_Q_INVALIDATE((elm)->field.tqe_prev);                          \ +		_Q_INVALIDATE((elm)->field.tqe_next);                          \ +	} while (0) + +#define TAILQ_CONCAT(head1, head2, field)                                      \ +	do {                                                                   \ +		if (!TAILQ_EMPTY(head2)) {                                     \ +			*(head1)->tqh_last = (head2)->tqh_first;               \ +			(head2)->tqh_first->field.tqe_prev =                   \ +				(head1)->tqh_last;                             \ +			(head1)->tqh_last = (head2)->tqh_last;                 \ +			TAILQ_INIT((head2));                                   \ +		}                                                              \ +	} while (0) + +#endif /* !_SYS_QUEUE_H_ */  | 
