svn commit: r200647 - stable/7/sys/sys
John Baldwin
jhb at FreeBSD.org
Thu Dec 17 19:56:10 UTC 2009
Author: jhb
Date: Thu Dec 17 19:56:09 2009
New Revision: 200647
URL: http://svn.freebsd.org/changeset/base/200647
Log:
Partial merge of 179210 and 192926 to ease compilation of 8.x code on 7:
Introduce REMOVE_AFTER() macro's for SLIST and STAILQ.
Modified:
stable/7/sys/sys/queue.h
Modified: stable/7/sys/sys/queue.h
==============================================================================
--- stable/7/sys/sys/queue.h Thu Dec 17 19:54:32 2009 (r200646)
+++ stable/7/sys/sys/queue.h Thu Dec 17 19:56:09 2009 (r200647)
@@ -96,6 +96,7 @@
* _INSERT_AFTER + + + +
* _INSERT_TAIL - - + +
* _CONCAT - - + +
+ * _REMOVE_AFTER + - + -
* _REMOVE_HEAD + - + -
* _REMOVE + + + +
*
@@ -195,12 +196,16 @@ struct { \
struct type *curelm = SLIST_FIRST((head)); \
while (SLIST_NEXT(curelm, field) != (elm)) \
curelm = SLIST_NEXT(curelm, field); \
- SLIST_NEXT(curelm, field) = \
- SLIST_NEXT(SLIST_NEXT(curelm, field), field); \
+ SLIST_REMOVE_AFTER(curelm, field); \
} \
TRASHIT((elm)->field.sle_next); \
} while (0)
+#define SLIST_REMOVE_AFTER(elm, field) do { \
+ SLIST_NEXT(elm, field) = \
+ SLIST_NEXT(SLIST_NEXT(elm, field), field); \
+} while (0)
+
#define SLIST_REMOVE_HEAD(head, field) do { \
SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \
} while (0)
@@ -287,9 +292,7 @@ struct { \
struct type *curelm = STAILQ_FIRST((head)); \
while (STAILQ_NEXT(curelm, field) != (elm)) \
curelm = STAILQ_NEXT(curelm, field); \
- if ((STAILQ_NEXT(curelm, field) = \
- STAILQ_NEXT(STAILQ_NEXT(curelm, field), field)) == NULL)\
- (head)->stqh_last = &STAILQ_NEXT((curelm), field);\
+ STAILQ_REMOVE_AFTER(head, curelm, field); \
} \
TRASHIT((elm)->field.stqe_next); \
} while (0)
@@ -300,6 +303,12 @@ struct { \
(head)->stqh_last = &STAILQ_FIRST((head)); \
} while (0)
+#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); \
+} while (0)
+
/*
* List declarations.
*/
More information about the svn-src-stable
mailing list