From nobody@FreeBSD.org  Wed Jan 20 21:19:42 2010
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 776FA106566B
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 20 Jan 2010 21:19:42 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (www.freebsd.org [IPv6:2001:4f8:fff6::21])
	by mx1.freebsd.org (Postfix) with ESMTP id 678A18FC13
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 20 Jan 2010 21:19:42 +0000 (UTC)
Received: from www.freebsd.org (localhost [127.0.0.1])
	by www.freebsd.org (8.14.3/8.14.3) with ESMTP id o0KLJgCX082706
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 20 Jan 2010 21:19:42 GMT
	(envelope-from nobody@www.freebsd.org)
Received: (from nobody@localhost)
	by www.freebsd.org (8.14.3/8.14.3/Submit) id o0KLJg2t082705;
	Wed, 20 Jan 2010 21:19:42 GMT
	(envelope-from nobody)
Message-Id: <201001202119.o0KLJg2t082705@www.freebsd.org>
Date: Wed, 20 Jan 2010 21:19:42 GMT
From: Jeremy Huddleston <jeremyhu@apple.com>
To: freebsd-gnats-submit@FreeBSD.org
Subject: _SWAP not listed in comment in sys/queue.h
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         143033
>Category:       kern
>Synopsis:       [headers] [patch] _SWAP not listed in comment in sys/queue.h
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          doc-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Jan 20 21:20:05 UTC 2010
>Closed-Date:    Fri Nov 02 22:22:44 UTC 2012
>Last-Modified:  Fri Nov 02 22:22:44 UTC 2012
>Originator:     Jeremy Huddleston
>Release:        8.0
>Organization:
Apple
>Environment:
NA
>Description:
_SWAP is not listed in the list of macros in the documentation comment in queue.h

Also attaching a convenience fix which places STAILQ_REMOVE_HEAD correctly in alphabetical order.
>How-To-Repeat:

>Fix:
Index: queue.h
===================================================================
RCS file: /home/ncvs/src/sys/sys/queue.h,v
retrieving revision 1.72
diff -u -p -r1.72 queue.h
--- queue.h	27 May 2009 19:28:04 -0000	1.72
+++ queue.h	20 Jan 2010 21:14:53 -0000
@@ -99,6 +99,7 @@
  * _REMOVE_AFTER		+	-	+	-
  * _REMOVE_HEAD			+	-	+	-
  * _REMOVE			+	+	+	+
+ * _SWAP			-	+	+	+
  *
  */
 #ifdef QUEUE_MACRO_DEBUG
@@ -297,18 +298,18 @@ struct {								\
 	TRASHIT((elm)->field.stqe_next);				\
 } while (0)
 
-#define	STAILQ_REMOVE_HEAD(head, field) do {				\
-	if ((STAILQ_FIRST((head)) =					\
-	     STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL)		\
-		(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)
 
+#define	STAILQ_REMOVE_HEAD(head, field) do {				\
+	if ((STAILQ_FIRST((head)) =					\
+	     STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL)		\
+		(head)->stqh_last = &STAILQ_FIRST((head));		\
+} while (0)
+
 #define STAILQ_SWAP(head1, head2, type) do {				\
 	struct type *swap_first = STAILQ_FIRST(head1);			\
 	struct type **swap_last = (head1)->stqh_last;			\


>Release-Note:
>Audit-Trail:

From: Jeremy Huddleston <jeremyhu@apple.com>
To: FreeBSD-gnats-submit@FreeBSD.org, freebsd-bugs@FreeBSD.org
Cc:  
Subject: Re: misc/143033: _SWAP not listed in comment in sys/queue.h
Date: Wed, 20 Jan 2010 13:52:31 -0800

 --Apple-Mail-31-101826672
 Content-Type: text/plain;
 	charset=US-ASCII;
 	format=flowed;
 	delsp=yes
 Content-Transfer-Encoding: 7bit
 
 It's also worth noting that _SWAP is not mentioned in the man page,  
 and TAILQ_REMOVE_AFTER is not discussed in the man page.
 
 
 --Apple-Mail-31-101826672
 Content-Disposition: attachment;
 	filename=smime.p7s
 Content-Type: application/pkcs7-signature;
 	name=smime.p7s
 Content-Transfer-Encoding: base64
 
 MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIITbjCCAz8w
 ggKooAMCAQICAQ0wDQYJKoZIhvcNAQEFBQAwgdExCzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0
 ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEaMBgGA1UEChMRVGhhd3RlIENvbnN1bHRpbmcx
 KDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24xJDAiBgNVBAMTG1RoYXd0
 ZSBQZXJzb25hbCBGcmVlbWFpbCBDQTErMCkGCSqGSIb3DQEJARYccGVyc29uYWwtZnJlZW1haWxA
 dGhhd3RlLmNvbTAeFw0wMzA3MTcwMDAwMDBaFw0xMzA3MTYyMzU5NTlaMGIxCzAJBgNVBAYTAlpB
 MSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUg
 UGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
 xKY8VXNV+065yplaHmjAdQRwnd/p/6Me7L3N9VvyGna9fww6YfK/Uc4B1OVQCjDXAmNaLIkVcI7d
 yfArhVqqP3FWy688Cwfn8R+RNiQqE88r1fOCdz0Dviv+uxg+B79AgAJk16emu59l0cUqVIUPSAR/
 p7bRPGEEQB5kGXJgt/sCAwEAAaOBlDCBkTASBgNVHRMBAf8ECDAGAQH/AgEAMEMGA1UdHwQ8MDow
 OKA2oDSGMmh0dHA6Ly9jcmwudGhhd3RlLmNvbS9UaGF3dGVQZXJzb25hbEZyZWVtYWlsQ0EuY3Js
 MAsGA1UdDwQEAwIBBjApBgNVHREEIjAgpB4wHDEaMBgGA1UEAxMRUHJpdmF0ZUxhYmVsMi0xMzgw
 DQYJKoZIhvcNAQEFBQADgYEASIzRUIPqCy7MDaNmrGcPf6+svsIXoUOWlJ1/TCG4+DYfqi2fNi/A
 9BxQIJNwPP2t4WFiw9k6GX6EsZkbAMUaC4J0niVQlGLH2ydxVyWN3amcOY6MIE9lX5Xa9/eH1sYI
 Tq726jTlEBpbNU1341YheILcIRk13iSx0x1G/11fZU8wggM/MIICqKADAgECAgENMA0GCSqGSIb3
 DQEBBQUAMIHRMQswCQYDVQQGEwJaQTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIwEAYDVQQHEwlD
 YXBlIFRvd24xGjAYBgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5nMSgwJgYDVQQLEx9DZXJ0aWZpY2F0
 aW9uIFNlcnZpY2VzIERpdmlzaW9uMSQwIgYDVQQDExtUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwg
 Q0ExKzApBgkqhkiG9w0BCQEWHHBlcnNvbmFsLWZyZWVtYWlsQHRoYXd0ZS5jb20wHhcNMDMwNzE3
 MDAwMDAwWhcNMTMwNzE2MjM1OTU5WjBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENv
 bnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWlsIElz
 c3VpbmcgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMSmPFVzVftOucqZWh5owHUEcJ3f
 6f+jHuy9zfVb8hp2vX8MOmHyv1HOAdTlUAow1wJjWiyJFXCO3cnwK4Vaqj9xVsuvPAsH5/EfkTYk
 KhPPK9Xzgnc9A74r/rsYPge/QIACZNenprufZdHFKlSFD0gEf6e20TxhBEAeZBlyYLf7AgMBAAGj
 gZQwgZEwEgYDVR0TAQH/BAgwBgEB/wIBADBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3JsLnRo
 YXd0ZS5jb20vVGhhd3RlUGVyc29uYWxGcmVlbWFpbENBLmNybDALBgNVHQ8EBAMCAQYwKQYDVR0R
 BCIwIKQeMBwxGjAYBgNVBAMTEVByaXZhdGVMYWJlbDItMTM4MA0GCSqGSIb3DQEBBQUAA4GBAEiM
 0VCD6gsuzA2jZqxnD3+vrL7CF6FDlpSdf0whuPg2H6otnzYvwPQcUCCTcDz9reFhYsPZOhl+hLGZ
 GwDFGguCdJ4lUJRix9sncVcljd2pnDmOjCBPZV+V2vf3h9bGCE6u9uo05RAaWzVNd+NWIXiC3CEZ
 Nd4ksdMdRv9dX2VPMIIGcDCCBdmgAwIBAgIQKF0Nr8sW2fhCBNsoUjwm8zANBgkqhkiG9w0BAQUF
 ADBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEs
 MCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWlsIElzc3VpbmcgQ0EwHhcNMDkwNTA0MDUy
 OTE0WhcNMTAwNTA0MDUyOTE0WjCCAnAxHzAdBgNVBAMTFlRoYXd0ZSBGcmVlbWFpbCBNZW1iZXIx
 JDAiBgkqhkiG9w0BCQEWFWplcmVteWh1QGJlcmtlbGV5LmVkdTErMCkGCSqGSIb3DQEJARYcamVy
 ZW15aHVAdWNsaW5rLmJlcmtlbGV5LmVkdTEsMCoGCSqGSIb3DQEJARYdamVyZW15aHVAdWNsaW5r
 NC5iZXJrZWxleS5lZHUxJzAlBgkqhkiG9w0BCQEWGGplcmVteWh1QGNzLmJlcmtlbGV5LmVkdTEp
 MCcGCSqGSIb3DQEJARYaamVyZW15QHVwZS5jcy5iZXJrZWxleS5lZHUxKTAnBgkqhkiG9w0BCQEW
 GmplcmVteWh1QGVlY3MuYmVya2VsZXkuZWR1MScwJQYJKoZIhvcNAQkBFhhqZXJlbXlodUBmcmVl
 ZGVza3RvcC5vcmcxJDAiBgkqhkiG9w0BCQEWFWplcmVteWh1QG1hY3BvcnRzLm9yZzElMCMGCSqG
 SIb3DQEJARYWamVyZW15QG91dGVyc3F1YXJlLm9yZzEgMB4GCSqGSIb3DQEJARYRamVyZW15aHVk
 QG1hYy5jb20xIzAhBgkqhkiG9w0BCQEWFGplcmVteUBodWRzY2FiaW4uY29tMSEwHwYJKoZIhvcN
 AQkBFhJqZXJlbXlodUBhcHBsZS5jb20xJTAjBgkqhkiG9w0BCQEWFmplcmVteUBvdXRlcnNxdWFy
 ZS5jb20xJTAjBgkqhkiG9w0BCQEWFnBheXBhbEBvdXRlcnNxdWFyZS5jb20xHzAdBgkqhkiG9w0B
 CQEWEGplcmVteWh1ZEBtZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCwVnJ8
 XrKgByWkhJhQDk7Kj45PnZYRXJNQfcTyBQsqSqfUh13Limf2qJTxpw8Mdq/SuNkO3ZjLkaYGPB4+
 8uaHdDqGEanq2wf4qKV4dyFEQO92mRQRxLijfBS4CunlSYzHuPd6g5osI0BVpFbNRswqOXWbHd1z
 XRVvRqpvYKQJFWLf3dqXU3zZO2nv4sabnovbNCKEO6HrxQeawFfwxL20adsK5F1ejK1VRSEsTzd7
 BjNs8QTWC4qZKrrNuaPJLVt4LDbRXIqOggrZaOkggIBIIdXubjOrrpR41PvcvibfvYLUpo3bdX5e
 tWH/VU/ywIS3oIc4d+VtOL/O3YdCpX0FAgMBAAGjggGRMIIBjTCCAXsGA1UdEQSCAXIwggFugRVq
 ZXJlbXlodUBiZXJrZWxleS5lZHWBHGplcmVteWh1QHVjbGluay5iZXJrZWxleS5lZHWBHWplcmVt
 eWh1QHVjbGluazQuYmVya2VsZXkuZWR1gRhqZXJlbXlodUBjcy5iZXJrZWxleS5lZHWBGmplcmVt
 eUB1cGUuY3MuYmVya2VsZXkuZWR1gRpqZXJlbXlodUBlZWNzLmJlcmtlbGV5LmVkdYEYamVyZW15
 aHVAZnJlZWRlc2t0b3Aub3JngRVqZXJlbXlodUBtYWNwb3J0cy5vcmeBFmplcmVteUBvdXRlcnNx
 dWFyZS5vcmeBEWplcmVteWh1ZEBtYWMuY29tgRRqZXJlbXlAaHVkc2NhYmluLmNvbYESamVyZW15
 aHVAYXBwbGUuY29tgRZqZXJlbXlAb3V0ZXJzcXVhcmUuY29tgRZwYXlwYWxAb3V0ZXJzcXVhcmUu
 Y29tgRBqZXJlbXlodWRAbWUuY29tMAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEFBQADgYEAMtx6
 voXn2w2+kaevSb7REuy5TBAQNzwlcwLiaC44HMVhwQGEYG544mBabCqY2+MtLbEn2RDQGHArtuCA
 Tv9liObLp6UPNKo+8Bcd3edN0dlFSeb0wFPVt71e05dGeyIoBxIrM4ix2BON/SHcGsgt3n1DRXen
 JLYVV809vRtHQpowggZwMIIF2aADAgECAhBfIA3CIvCJAyf8rsNvgxtuMA0GCSqGSIb3DQEBBQUA
 MGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSww
 KgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQTAeFw0wOTA5MTQyMTM2
 MjdaFw0xMDA5MTQyMTM2MjdaMIICcDEfMB0GA1UEAxMWVGhhd3RlIEZyZWVtYWlsIE1lbWJlcjEk
 MCIGCSqGSIb3DQEJARYVamVyZW15aHVAYmVya2VsZXkuZWR1MSswKQYJKoZIhvcNAQkBFhxqZXJl
 bXlodUB1Y2xpbmsuYmVya2VsZXkuZWR1MSwwKgYJKoZIhvcNAQkBFh1qZXJlbXlodUB1Y2xpbms0
 LmJlcmtlbGV5LmVkdTEnMCUGCSqGSIb3DQEJARYYamVyZW15aHVAY3MuYmVya2VsZXkuZWR1MSkw
 JwYJKoZIhvcNAQkBFhpqZXJlbXlAdXBlLmNzLmJlcmtlbGV5LmVkdTEpMCcGCSqGSIb3DQEJARYa
 amVyZW15aHVAZWVjcy5iZXJrZWxleS5lZHUxJzAlBgkqhkiG9w0BCQEWGGplcmVteWh1QGZyZWVk
 ZXNrdG9wLm9yZzEkMCIGCSqGSIb3DQEJARYVamVyZW15aHVAbWFjcG9ydHMub3JnMSUwIwYJKoZI
 hvcNAQkBFhZqZXJlbXlAb3V0ZXJzcXVhcmUub3JnMSAwHgYJKoZIhvcNAQkBFhFqZXJlbXlodWRA
 bWFjLmNvbTEjMCEGCSqGSIb3DQEJARYUamVyZW15QGh1ZHNjYWJpbi5jb20xITAfBgkqhkiG9w0B
 CQEWEmplcmVteWh1QGFwcGxlLmNvbTElMCMGCSqGSIb3DQEJARYWamVyZW15QG91dGVyc3F1YXJl
 LmNvbTElMCMGCSqGSIb3DQEJARYWcGF5cGFsQG91dGVyc3F1YXJlLmNvbTEfMB0GCSqGSIb3DQEJ
 ARYQamVyZW15aHVkQG1lLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL+c2RGH
 leO3G25PQEPEVsV3H/cWDewBCnMbqV0zgEg3hMyoRUG3aRUgH4gWbhVNkx/5t0A+mLQQWNnktg2J
 ku4MJJhHmarkxQAwITyamyO+37GHFl2d7oe5J7CFwg3Evf/2Lli0mfglfDHBy5YN9yURbSMVRaDV
 WGHhpYkqTwGXG2Bpai7oqdOlB0hDcRGE4Fv5aurxAuxyIohZMuxhZBzDfmidKsOUTnsz+NCUFIXK
 cMLYWwvH4XOBC4l0SU523phMyEW0OPas38EWd2NMCYaO1URA944+cS68DUvCqrrRzGmixY03PcaV
 uJ/+KA3L2u9esq8vt8s5m8aW8MWQWIkCAwEAAaOCAZEwggGNMIIBewYDVR0RBIIBcjCCAW6BFWpl
 cmVteWh1QGJlcmtlbGV5LmVkdYEcamVyZW15aHVAdWNsaW5rLmJlcmtlbGV5LmVkdYEdamVyZW15
 aHVAdWNsaW5rNC5iZXJrZWxleS5lZHWBGGplcmVteWh1QGNzLmJlcmtlbGV5LmVkdYEaamVyZW15
 QHVwZS5jcy5iZXJrZWxleS5lZHWBGmplcmVteWh1QGVlY3MuYmVya2VsZXkuZWR1gRhqZXJlbXlo
 dUBmcmVlZGVza3RvcC5vcmeBFWplcmVteWh1QG1hY3BvcnRzLm9yZ4EWamVyZW15QG91dGVyc3F1
 YXJlLm9yZ4ERamVyZW15aHVkQG1hYy5jb22BFGplcmVteUBodWRzY2FiaW4uY29tgRJqZXJlbXlo
 dUBhcHBsZS5jb22BFmplcmVteUBvdXRlcnNxdWFyZS5jb22BFnBheXBhbEBvdXRlcnNxdWFyZS5j
 b22BEGplcmVteWh1ZEBtZS5jb20wDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQUFAAOBgQBAga5a
 Jmkyd0TMiY0icyR7j5soyooiP4q9+Iu6lG+s/S+7vF5sDadCq+Y7US091MNT4LmbQehwwhi4jUWy
 EZ+KP9dhfWMqi51rZDbhWxAqAoKmgWgoQ9UsA4LqaC1wWlrM/DtzZ7+L5ZZ+MWlr94fDNL8qU3+y
 3ZfiXgpWBV1x1zGCAxAwggMMAgEBMHYwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBD
 b25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJ
 c3N1aW5nIENBAhBfIA3CIvCJAyf8rsNvgxtuMAkGBSsOAwIaBQCgggFvMBgGCSqGSIb3DQEJAzEL
 BgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTEwMDEyMDIxNTIzMlowIwYJKoZIhvcNAQkEMRYE
 FI0TLV+LCBHdMAlafN2E82fHRT2kMIGFBgkrBgEEAYI3EAQxeDB2MGIxCzAJBgNVBAYTAlpBMSUw
 IwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVy
 c29uYWwgRnJlZW1haWwgSXNzdWluZyBDQQIQKF0Nr8sW2fhCBNsoUjwm8zCBhwYLKoZIhvcNAQkQ
 AgsxeKB2MGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBM
 dGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQQIQKF0Nr8sW
 2fhCBNsoUjwm8zANBgkqhkiG9w0BAQEFAASCAQB4R3O8XkF+zg54pTbEf7aHsUJnkXXBBK7qbfqT
 7p1cfSXTwWxqF60PZ2k+CIOlvRgE/wyu2Q7jhGxMXhTidgs+G7tKLm/Zdkcsteeb6uxqqAp9urPR
 joR3AeLTtIaa5bt6TJTjV663JIa1+9cKe2NC9e6EpxhW1IRnP0u6NUTM4zIVoyBjQwTKND+WsegC
 1fkIDW5kG05SmP1Li+Bjvt//aI0oFea3LpkarcXxjiS2Q+iNgx5QQqAWb8Zu6gIVac9AY1BeBJw5
 BBLzaMYp8RBX+hnt5+46RpebkG1R3bpLfs72A4LGJCdMj6LSVC5JkBOrAatJhwlzjEgUdteKvCm8
 AAAAAAAA
 
 --Apple-Mail-31-101826672--

From: Jeremy Huddleston <jeremyhu@apple.com>
To: FreeBSD-gnats-submit@FreeBSD.org,
 freebsd-bugs@FreeBSD.org
Cc:  
Subject: Re: misc/143033: _SWAP not listed in comment in sys/queue.h
Date: Wed, 20 Jan 2010 15:15:29 -0800

 --Apple-Mail-36-106804666
 Content-Type: text/plain;
 	charset=US-ASCII;
 	format=flowed;
 	delsp=yes
 Content-Transfer-Encoding: 7bit
 
 Please ignore my previous comment about the non-existent  
 TAILQ_REMOVE_AFTER, but the point remains that _SWAP is not mentioned  
 in queue(3).
 
      LIST_SWAP(LIST_HEAD *head1, LIST_HEAD *head2, TYPE, LIST_ENTRY  
 NAME)
      STAILQ_SWAP(STAILQ_HEAD *head1, STAILQ_HEAD *head2, TYPE);
      TAILQ_SWAP(TAILQ_HEAD *head1, TAILQ_HEAD *head2, TYPE,  
 TAILQ_ENTRY NAME)
 
 
 --Apple-Mail-36-106804666
 Content-Disposition: attachment;
 	filename=smime.p7s
 Content-Type: application/pkcs7-signature;
 	name=smime.p7s
 Content-Transfer-Encoding: base64
 
 MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIITbjCCAz8w
 ggKooAMCAQICAQ0wDQYJKoZIhvcNAQEFBQAwgdExCzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0
 ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEaMBgGA1UEChMRVGhhd3RlIENvbnN1bHRpbmcx
 KDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24xJDAiBgNVBAMTG1RoYXd0
 ZSBQZXJzb25hbCBGcmVlbWFpbCBDQTErMCkGCSqGSIb3DQEJARYccGVyc29uYWwtZnJlZW1haWxA
 dGhhd3RlLmNvbTAeFw0wMzA3MTcwMDAwMDBaFw0xMzA3MTYyMzU5NTlaMGIxCzAJBgNVBAYTAlpB
 MSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUg
 UGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
 xKY8VXNV+065yplaHmjAdQRwnd/p/6Me7L3N9VvyGna9fww6YfK/Uc4B1OVQCjDXAmNaLIkVcI7d
 yfArhVqqP3FWy688Cwfn8R+RNiQqE88r1fOCdz0Dviv+uxg+B79AgAJk16emu59l0cUqVIUPSAR/
 p7bRPGEEQB5kGXJgt/sCAwEAAaOBlDCBkTASBgNVHRMBAf8ECDAGAQH/AgEAMEMGA1UdHwQ8MDow
 OKA2oDSGMmh0dHA6Ly9jcmwudGhhd3RlLmNvbS9UaGF3dGVQZXJzb25hbEZyZWVtYWlsQ0EuY3Js
 MAsGA1UdDwQEAwIBBjApBgNVHREEIjAgpB4wHDEaMBgGA1UEAxMRUHJpdmF0ZUxhYmVsMi0xMzgw
 DQYJKoZIhvcNAQEFBQADgYEASIzRUIPqCy7MDaNmrGcPf6+svsIXoUOWlJ1/TCG4+DYfqi2fNi/A
 9BxQIJNwPP2t4WFiw9k6GX6EsZkbAMUaC4J0niVQlGLH2ydxVyWN3amcOY6MIE9lX5Xa9/eH1sYI
 Tq726jTlEBpbNU1341YheILcIRk13iSx0x1G/11fZU8wggM/MIICqKADAgECAgENMA0GCSqGSIb3
 DQEBBQUAMIHRMQswCQYDVQQGEwJaQTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIwEAYDVQQHEwlD
 YXBlIFRvd24xGjAYBgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5nMSgwJgYDVQQLEx9DZXJ0aWZpY2F0
 aW9uIFNlcnZpY2VzIERpdmlzaW9uMSQwIgYDVQQDExtUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwg
 Q0ExKzApBgkqhkiG9w0BCQEWHHBlcnNvbmFsLWZyZWVtYWlsQHRoYXd0ZS5jb20wHhcNMDMwNzE3
 MDAwMDAwWhcNMTMwNzE2MjM1OTU5WjBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENv
 bnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWlsIElz
 c3VpbmcgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMSmPFVzVftOucqZWh5owHUEcJ3f
 6f+jHuy9zfVb8hp2vX8MOmHyv1HOAdTlUAow1wJjWiyJFXCO3cnwK4Vaqj9xVsuvPAsH5/EfkTYk
 KhPPK9Xzgnc9A74r/rsYPge/QIACZNenprufZdHFKlSFD0gEf6e20TxhBEAeZBlyYLf7AgMBAAGj
 gZQwgZEwEgYDVR0TAQH/BAgwBgEB/wIBADBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3JsLnRo
 YXd0ZS5jb20vVGhhd3RlUGVyc29uYWxGcmVlbWFpbENBLmNybDALBgNVHQ8EBAMCAQYwKQYDVR0R
 BCIwIKQeMBwxGjAYBgNVBAMTEVByaXZhdGVMYWJlbDItMTM4MA0GCSqGSIb3DQEBBQUAA4GBAEiM
 0VCD6gsuzA2jZqxnD3+vrL7CF6FDlpSdf0whuPg2H6otnzYvwPQcUCCTcDz9reFhYsPZOhl+hLGZ
 GwDFGguCdJ4lUJRix9sncVcljd2pnDmOjCBPZV+V2vf3h9bGCE6u9uo05RAaWzVNd+NWIXiC3CEZ
 Nd4ksdMdRv9dX2VPMIIGcDCCBdmgAwIBAgIQKF0Nr8sW2fhCBNsoUjwm8zANBgkqhkiG9w0BAQUF
 ADBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEs
 MCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWlsIElzc3VpbmcgQ0EwHhcNMDkwNTA0MDUy
 OTE0WhcNMTAwNTA0MDUyOTE0WjCCAnAxHzAdBgNVBAMTFlRoYXd0ZSBGcmVlbWFpbCBNZW1iZXIx
 JDAiBgkqhkiG9w0BCQEWFWplcmVteWh1QGJlcmtlbGV5LmVkdTErMCkGCSqGSIb3DQEJARYcamVy
 ZW15aHVAdWNsaW5rLmJlcmtlbGV5LmVkdTEsMCoGCSqGSIb3DQEJARYdamVyZW15aHVAdWNsaW5r
 NC5iZXJrZWxleS5lZHUxJzAlBgkqhkiG9w0BCQEWGGplcmVteWh1QGNzLmJlcmtlbGV5LmVkdTEp
 MCcGCSqGSIb3DQEJARYaamVyZW15QHVwZS5jcy5iZXJrZWxleS5lZHUxKTAnBgkqhkiG9w0BCQEW
 GmplcmVteWh1QGVlY3MuYmVya2VsZXkuZWR1MScwJQYJKoZIhvcNAQkBFhhqZXJlbXlodUBmcmVl
 ZGVza3RvcC5vcmcxJDAiBgkqhkiG9w0BCQEWFWplcmVteWh1QG1hY3BvcnRzLm9yZzElMCMGCSqG
 SIb3DQEJARYWamVyZW15QG91dGVyc3F1YXJlLm9yZzEgMB4GCSqGSIb3DQEJARYRamVyZW15aHVk
 QG1hYy5jb20xIzAhBgkqhkiG9w0BCQEWFGplcmVteUBodWRzY2FiaW4uY29tMSEwHwYJKoZIhvcN
 AQkBFhJqZXJlbXlodUBhcHBsZS5jb20xJTAjBgkqhkiG9w0BCQEWFmplcmVteUBvdXRlcnNxdWFy
 ZS5jb20xJTAjBgkqhkiG9w0BCQEWFnBheXBhbEBvdXRlcnNxdWFyZS5jb20xHzAdBgkqhkiG9w0B
 CQEWEGplcmVteWh1ZEBtZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCwVnJ8
 XrKgByWkhJhQDk7Kj45PnZYRXJNQfcTyBQsqSqfUh13Limf2qJTxpw8Mdq/SuNkO3ZjLkaYGPB4+
 8uaHdDqGEanq2wf4qKV4dyFEQO92mRQRxLijfBS4CunlSYzHuPd6g5osI0BVpFbNRswqOXWbHd1z
 XRVvRqpvYKQJFWLf3dqXU3zZO2nv4sabnovbNCKEO6HrxQeawFfwxL20adsK5F1ejK1VRSEsTzd7
 BjNs8QTWC4qZKrrNuaPJLVt4LDbRXIqOggrZaOkggIBIIdXubjOrrpR41PvcvibfvYLUpo3bdX5e
 tWH/VU/ywIS3oIc4d+VtOL/O3YdCpX0FAgMBAAGjggGRMIIBjTCCAXsGA1UdEQSCAXIwggFugRVq
 ZXJlbXlodUBiZXJrZWxleS5lZHWBHGplcmVteWh1QHVjbGluay5iZXJrZWxleS5lZHWBHWplcmVt
 eWh1QHVjbGluazQuYmVya2VsZXkuZWR1gRhqZXJlbXlodUBjcy5iZXJrZWxleS5lZHWBGmplcmVt
 eUB1cGUuY3MuYmVya2VsZXkuZWR1gRpqZXJlbXlodUBlZWNzLmJlcmtlbGV5LmVkdYEYamVyZW15
 aHVAZnJlZWRlc2t0b3Aub3JngRVqZXJlbXlodUBtYWNwb3J0cy5vcmeBFmplcmVteUBvdXRlcnNx
 dWFyZS5vcmeBEWplcmVteWh1ZEBtYWMuY29tgRRqZXJlbXlAaHVkc2NhYmluLmNvbYESamVyZW15
 aHVAYXBwbGUuY29tgRZqZXJlbXlAb3V0ZXJzcXVhcmUuY29tgRZwYXlwYWxAb3V0ZXJzcXVhcmUu
 Y29tgRBqZXJlbXlodWRAbWUuY29tMAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEFBQADgYEAMtx6
 voXn2w2+kaevSb7REuy5TBAQNzwlcwLiaC44HMVhwQGEYG544mBabCqY2+MtLbEn2RDQGHArtuCA
 Tv9liObLp6UPNKo+8Bcd3edN0dlFSeb0wFPVt71e05dGeyIoBxIrM4ix2BON/SHcGsgt3n1DRXen
 JLYVV809vRtHQpowggZwMIIF2aADAgECAhBfIA3CIvCJAyf8rsNvgxtuMA0GCSqGSIb3DQEBBQUA
 MGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSww
 KgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQTAeFw0wOTA5MTQyMTM2
 MjdaFw0xMDA5MTQyMTM2MjdaMIICcDEfMB0GA1UEAxMWVGhhd3RlIEZyZWVtYWlsIE1lbWJlcjEk
 MCIGCSqGSIb3DQEJARYVamVyZW15aHVAYmVya2VsZXkuZWR1MSswKQYJKoZIhvcNAQkBFhxqZXJl
 bXlodUB1Y2xpbmsuYmVya2VsZXkuZWR1MSwwKgYJKoZIhvcNAQkBFh1qZXJlbXlodUB1Y2xpbms0
 LmJlcmtlbGV5LmVkdTEnMCUGCSqGSIb3DQEJARYYamVyZW15aHVAY3MuYmVya2VsZXkuZWR1MSkw
 JwYJKoZIhvcNAQkBFhpqZXJlbXlAdXBlLmNzLmJlcmtlbGV5LmVkdTEpMCcGCSqGSIb3DQEJARYa
 amVyZW15aHVAZWVjcy5iZXJrZWxleS5lZHUxJzAlBgkqhkiG9w0BCQEWGGplcmVteWh1QGZyZWVk
 ZXNrdG9wLm9yZzEkMCIGCSqGSIb3DQEJARYVamVyZW15aHVAbWFjcG9ydHMub3JnMSUwIwYJKoZI
 hvcNAQkBFhZqZXJlbXlAb3V0ZXJzcXVhcmUub3JnMSAwHgYJKoZIhvcNAQkBFhFqZXJlbXlodWRA
 bWFjLmNvbTEjMCEGCSqGSIb3DQEJARYUamVyZW15QGh1ZHNjYWJpbi5jb20xITAfBgkqhkiG9w0B
 CQEWEmplcmVteWh1QGFwcGxlLmNvbTElMCMGCSqGSIb3DQEJARYWamVyZW15QG91dGVyc3F1YXJl
 LmNvbTElMCMGCSqGSIb3DQEJARYWcGF5cGFsQG91dGVyc3F1YXJlLmNvbTEfMB0GCSqGSIb3DQEJ
 ARYQamVyZW15aHVkQG1lLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL+c2RGH
 leO3G25PQEPEVsV3H/cWDewBCnMbqV0zgEg3hMyoRUG3aRUgH4gWbhVNkx/5t0A+mLQQWNnktg2J
 ku4MJJhHmarkxQAwITyamyO+37GHFl2d7oe5J7CFwg3Evf/2Lli0mfglfDHBy5YN9yURbSMVRaDV
 WGHhpYkqTwGXG2Bpai7oqdOlB0hDcRGE4Fv5aurxAuxyIohZMuxhZBzDfmidKsOUTnsz+NCUFIXK
 cMLYWwvH4XOBC4l0SU523phMyEW0OPas38EWd2NMCYaO1URA944+cS68DUvCqrrRzGmixY03PcaV
 uJ/+KA3L2u9esq8vt8s5m8aW8MWQWIkCAwEAAaOCAZEwggGNMIIBewYDVR0RBIIBcjCCAW6BFWpl
 cmVteWh1QGJlcmtlbGV5LmVkdYEcamVyZW15aHVAdWNsaW5rLmJlcmtlbGV5LmVkdYEdamVyZW15
 aHVAdWNsaW5rNC5iZXJrZWxleS5lZHWBGGplcmVteWh1QGNzLmJlcmtlbGV5LmVkdYEaamVyZW15
 QHVwZS5jcy5iZXJrZWxleS5lZHWBGmplcmVteWh1QGVlY3MuYmVya2VsZXkuZWR1gRhqZXJlbXlo
 dUBmcmVlZGVza3RvcC5vcmeBFWplcmVteWh1QG1hY3BvcnRzLm9yZ4EWamVyZW15QG91dGVyc3F1
 YXJlLm9yZ4ERamVyZW15aHVkQG1hYy5jb22BFGplcmVteUBodWRzY2FiaW4uY29tgRJqZXJlbXlo
 dUBhcHBsZS5jb22BFmplcmVteUBvdXRlcnNxdWFyZS5jb22BFnBheXBhbEBvdXRlcnNxdWFyZS5j
 b22BEGplcmVteWh1ZEBtZS5jb20wDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQUFAAOBgQBAga5a
 Jmkyd0TMiY0icyR7j5soyooiP4q9+Iu6lG+s/S+7vF5sDadCq+Y7US091MNT4LmbQehwwhi4jUWy
 EZ+KP9dhfWMqi51rZDbhWxAqAoKmgWgoQ9UsA4LqaC1wWlrM/DtzZ7+L5ZZ+MWlr94fDNL8qU3+y
 3ZfiXgpWBV1x1zGCAxAwggMMAgEBMHYwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBD
 b25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJ
 c3N1aW5nIENBAhBfIA3CIvCJAyf8rsNvgxtuMAkGBSsOAwIaBQCgggFvMBgGCSqGSIb3DQEJAzEL
 BgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTEwMDEyMDIzMTUzMFowIwYJKoZIhvcNAQkEMRYE
 FC6fPLBWgfyjKZHB/38cfMp/4wltMIGFBgkrBgEEAYI3EAQxeDB2MGIxCzAJBgNVBAYTAlpBMSUw
 IwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVy
 c29uYWwgRnJlZW1haWwgSXNzdWluZyBDQQIQKF0Nr8sW2fhCBNsoUjwm8zCBhwYLKoZIhvcNAQkQ
 AgsxeKB2MGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBM
 dGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQQIQKF0Nr8sW
 2fhCBNsoUjwm8zANBgkqhkiG9w0BAQEFAASCAQAFhIX8vi6exuYRbOqG+SgKIs07HpRgwpGxICuw
 y0oYGlpAYLhKTm0Rr20tt64fMBvnbBBD4dG6o2ePWYy07U7kUeuR+f4udf3LtwxjmvDqsQA4nGTf
 YqO8hzXknV+1+TVNAiFP0VmuKso7LmdjeEWVvbwhbAWdmG5XB3c9cOTWMuM8243/z389w0N+p+TS
 b7XcYa4RExoXexTnt+Flbst14xX7l4vjwjy+xjVpmiB8tudCD2LBGfcj0QB4UnbHngdLXeX0sCiF
 HqP982B/D9ArGhmeq2skGk10AG3qGMcJ9SDsagsQVzp9oV9kTFbrBqf7Q5RPoxW809irvXSthKph
 AAAAAAAA
 
 --Apple-Mail-36-106804666--

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/143033: commit references a PR
Date: Fri, 13 May 2011 15:49:38 +0000 (UTC)

 Author: mdf
 Date: Fri May 13 15:49:23 2011
 New Revision: 221843
 URL: http://svn.freebsd.org/changeset/base/221843
 
 Log:
   Note that the _SWAP operation is supported for all list/queue types.
   Also place STAILQ_REMOVE_HEAD in alphabetical order.  Lastly, document
   the _SWAP macros.
   
   PR:		kern/143033
   MFC after:	1 week
 
 Modified:
   head/share/man/man3/Makefile
   head/share/man/man3/queue.3
   head/sys/sys/queue.h
 
 Modified: head/share/man/man3/Makefile
 ==============================================================================
 --- head/share/man/man3/Makefile	Fri May 13 15:21:31 2011	(r221842)
 +++ head/share/man/man3/Makefile	Fri May 13 15:49:23 2011	(r221843)
 @@ -53,6 +53,7 @@ MLINKS+=	queue.3 LIST_EMPTY.3 \
  		queue.3 LIST_INSERT_HEAD.3 \
  		queue.3 LIST_NEXT.3 \
  		queue.3 LIST_REMOVE.3 \
 +		queue.3 LIST_SWAP.3 \
  		queue.3 SLIST_EMPTY.3 \
  		queue.3 SLIST_ENTRY.3 \
  		queue.3 SLIST_FIRST.3 \
 @@ -67,6 +68,7 @@ MLINKS+=	queue.3 LIST_EMPTY.3 \
  		queue.3 SLIST_REMOVE.3 \
  		queue.3 SLIST_REMOVE_AFTER.3 \
  		queue.3 SLIST_REMOVE_HEAD.3 \
 +		queue.3 SLIST_SWAP.3 \
  		queue.3 STAILQ_CONCAT.3 \
  		queue.3 STAILQ_EMPTY.3 \
  		queue.3 STAILQ_ENTRY.3 \
 @@ -84,6 +86,7 @@ MLINKS+=	queue.3 LIST_EMPTY.3 \
  		queue.3 STAILQ_REMOVE.3 \
  		queue.3 STAILQ_REMOVE_AFTER.3 \
  		queue.3 STAILQ_REMOVE_HEAD.3 \
 +		queue.3 STAILQ_SWAP.3 \
  		queue.3 TAILQ_CONCAT.3 \
  		queue.3 TAILQ_EMPTY.3 \
  		queue.3 TAILQ_ENTRY.3 \
 @@ -102,7 +105,8 @@ MLINKS+=	queue.3 LIST_EMPTY.3 \
  		queue.3 TAILQ_LAST.3 \
  		queue.3 TAILQ_NEXT.3 \
  		queue.3 TAILQ_PREV.3 \
 -		queue.3 TAILQ_REMOVE.3
 +		queue.3 TAILQ_REMOVE.3 \
 +		queue.3 TAILQ_SWAP.3
  MLINKS+=	stdarg.3 va_arg.3 \
  		stdarg.3 va_copy.3 \
  		stdarg.3 va_end.3 \
 
 Modified: head/share/man/man3/queue.3
 ==============================================================================
 --- head/share/man/man3/queue.3	Fri May 13 15:21:31 2011	(r221842)
 +++ head/share/man/man3/queue.3	Fri May 13 15:49:23 2011	(r221843)
 @@ -32,7 +32,7 @@
  .\"	@(#)queue.3	8.2 (Berkeley) 1/24/94
  .\" $FreeBSD$
  .\"
 -.Dd March 24, 2006
 +.Dd May 13, 2011
  .Dt QUEUE 3
  .Os
  .Sh NAME
 @@ -50,6 +50,7 @@
  .Nm SLIST_REMOVE_AFTER ,
  .Nm SLIST_REMOVE_HEAD ,
  .Nm SLIST_REMOVE ,
 +.Nm SLIST_SWAP ,
  .Nm STAILQ_CONCAT ,
  .Nm STAILQ_EMPTY ,
  .Nm STAILQ_ENTRY ,
 @@ -67,6 +68,7 @@
  .Nm STAILQ_REMOVE_AFTER ,
  .Nm STAILQ_REMOVE_HEAD ,
  .Nm STAILQ_REMOVE ,
 +.Nm STAILQ_SWAP ,
  .Nm LIST_EMPTY ,
  .Nm LIST_ENTRY ,
  .Nm LIST_FIRST ,
 @@ -80,6 +82,7 @@
  .Nm LIST_INSERT_HEAD ,
  .Nm LIST_NEXT ,
  .Nm LIST_REMOVE ,
 +.Nm LIST_SWAP ,
  .Nm TAILQ_CONCAT ,
  .Nm TAILQ_EMPTY ,
  .Nm TAILQ_ENTRY ,
 @@ -98,7 +101,8 @@
  .Nm TAILQ_LAST ,
  .Nm TAILQ_NEXT ,
  .Nm TAILQ_PREV ,
 -.Nm TAILQ_REMOVE
 +.Nm TAILQ_REMOVE ,
 +.Nm TAILQ_SWAP
  .Nd implementations of singly-linked lists, singly-linked tail queues,
  lists and tail queues
  .Sh SYNOPSIS
 @@ -118,6 +122,7 @@ lists and tail queues
  .Fn SLIST_REMOVE_AFTER "TYPE *elm" "SLIST_ENTRY NAME"
  .Fn SLIST_REMOVE_HEAD "SLIST_HEAD *head" "SLIST_ENTRY NAME"
  .Fn SLIST_REMOVE "SLIST_HEAD *head" "TYPE *elm" "TYPE" "SLIST_ENTRY NAME"
 +.Fn SLIST_SWAP "SLIST_HEAD *head1" "SLIST_HEAD *head2" "SLIST_ENTRY NAME"
  .\"
  .Fn STAILQ_CONCAT "STAILQ_HEAD *head1" "STAILQ_HEAD *head2"
  .Fn STAILQ_EMPTY "STAILQ_HEAD *head"
 @@ -136,6 +141,7 @@ lists and tail queues
  .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 "STAILQ_HEAD *head" "TYPE *elm" "TYPE" "STAILQ_ENTRY NAME"
 +.Fn STAILQ_SWAP "STAILQ_HEAD *head1" "STAILQ_HEAD *head2" "STAILQ_ENTRY NAME"
  .\"
  .Fn LIST_EMPTY "LIST_HEAD *head"
  .Fn LIST_ENTRY "TYPE"
 @@ -150,6 +156,7 @@ lists and tail queues
  .Fn LIST_INSERT_HEAD "LIST_HEAD *head" "TYPE *elm" "LIST_ENTRY NAME"
  .Fn LIST_NEXT "TYPE *elm" "LIST_ENTRY NAME"
  .Fn LIST_REMOVE "TYPE *elm" "LIST_ENTRY NAME"
 +.Fn LIST_SWAP "LIST_HEAD *head1" "LIST_HEAD *head2" "TYPE" "LIST_ENTRY NAME"
  .\"
  .Fn TAILQ_CONCAT "TAILQ_HEAD *head1" "TAILQ_HEAD *head2" "TAILQ_ENTRY NAME"
  .Fn TAILQ_EMPTY "TAILQ_HEAD *head"
 @@ -170,6 +177,7 @@ lists and tail queues
  .Fn TAILQ_NEXT "TYPE *elm" "TAILQ_ENTRY NAME"
  .Fn TAILQ_PREV "TYPE *elm" "HEADNAME" "TAILQ_ENTRY NAME"
  .Fn TAILQ_REMOVE "TAILQ_HEAD *head" "TYPE *elm" "TAILQ_ENTRY NAME"
 +.Fn TAILQ_SWAP "TAILQ_HEAD *head1" "TAILQ_HEAD *head2" "TYPE" "TAILQ_ENTRY NAME"
  .\"
  .Sh DESCRIPTION
  These macros define and operate on four types of data structures:
 @@ -184,6 +192,8 @@ Insertion of a new entry after any eleme
  O(1) removal of an entry from the head of the list.
  .It
  Forward traversal through the list.
 +.It
 +Swawpping the contents of two lists.
  .El
  .Pp
  Singly-linked lists are the simplest of the four data structures
 @@ -402,6 +412,13 @@ The macro
  removes the element
  .Fa elm
  from the list.
 +.Pp
 +The macro
 +.Nm SLIST_SWAP
 +swaps the contents of
 +.Fa head1
 +and
 +.Fa head2 .
  .Sh SINGLY-LINKED LIST EXAMPLE
  .Bd -literal
  SLIST_HEAD(slisthead, entry) head =
 @@ -584,6 +601,13 @@ The macro
  removes the element
  .Fa elm
  from the tail queue.
 +.Pp
 +The macro
 +.Nm STAILQ_SWAP
 +swaps the contents of
 +.Fa head1
 +and
 +.Fa head2 .
  .Sh SINGLY-LINKED TAIL QUEUE EXAMPLE
  .Bd -literal
  STAILQ_HEAD(stailhead, entry) head =
 @@ -743,6 +767,13 @@ The macro
  removes the element
  .Fa elm
  from the list.
 +.Pp
 +The macro
 +.Nm LIST_SWAP
 +swaps the contents of
 +.Fa head1
 +and
 +.Fa head2 .
  .Sh LIST EXAMPLE
  .Bd -literal
  LIST_HEAD(listhead, entry) head =
 @@ -942,6 +973,13 @@ The macro
  removes the element
  .Fa elm
  from the tail queue.
 +.Pp
 +The macro
 +.Nm TAILQ_SWAP
 +swaps the contents of
 +.Fa head1
 +and
 +.Fa head2 .
  .Sh TAIL QUEUE EXAMPLE
  .Bd -literal
  TAILQ_HEAD(tailhead, entry) head =
 
 Modified: head/sys/sys/queue.h
 ==============================================================================
 --- head/sys/sys/queue.h	Fri May 13 15:21:31 2011	(r221842)
 +++ head/sys/sys/queue.h	Fri May 13 15:49:23 2011	(r221843)
 @@ -99,6 +99,7 @@
   * _REMOVE_AFTER		+	-	+	-
   * _REMOVE_HEAD			+	-	+	-
   * _REMOVE			+	+	+	+
 + * _SWAP			+	+	+	+
   *
   */
  #ifdef QUEUE_MACRO_DEBUG
 @@ -307,18 +308,18 @@ struct {								\
  	TRASHIT(*oldnext);						\
  } while (0)
  
 -#define	STAILQ_REMOVE_HEAD(head, field) do {				\
 -	if ((STAILQ_FIRST((head)) =					\
 -	     STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL)		\
 -		(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)
  
 +#define	STAILQ_REMOVE_HEAD(head, field) do {				\
 +	if ((STAILQ_FIRST((head)) =					\
 +	     STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL)		\
 +		(head)->stqh_last = &STAILQ_FIRST((head));		\
 +} while (0)
 +
  #define STAILQ_SWAP(head1, head2, type) do {				\
  	struct type *swap_first = STAILQ_FIRST(head1);			\
  	struct type **swap_last = (head1)->stqh_last;			\
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
State-Changed-From-To: open->patched 
State-Changed-By: mdf 
State-Changed-When: Fri May 13 15:53:19 UTC 2011 
State-Changed-Why:  
Code patched with r221843. 


http://www.freebsd.org/cgi/query-pr.cgi?pr=143033 

From: Matthew Fleming <mdf356@gmail.com>
To: "bug-followup@FreeBSD.org" <bug-followup@FreeBSD.org>,
 "jeremyhu@apple.com" <jeremyhu@apple.com>
Cc:  
Subject: Re: kern/143033: [headers] [patch] _SWAP not listed in comment in sys/queue.h
Date: Fri, 13 May 2011 12:03:37 -0400

 I didn't see a reference to TAILQ_REMOVE_AFTER in CURRENT in either the man p=
 age or queue.h. So I believe this PR is finished after the MFC.
 
 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/143033: commit references a PR
Date: Tue, 24 May 2011 16:04:56 +0000 (UTC)

 Author: mdf
 Date: Tue May 24 16:04:35 2011
 New Revision: 222261
 URL: http://svn.freebsd.org/changeset/base/222261
 
 Log:
   MFC r221843:
   
   Note that the _SWAP operation is supported for all list/queue types.
   Also place STAILQ_REMOVE_HEAD in alphabetical order.  Lastly, document
   the _SWAP macros.
   
   PR:		kern/143033
 
 Modified:
   stable/8/share/man/man3/Makefile
   stable/8/share/man/man3/queue.3
   stable/8/sys/sys/queue.h
 Directory Properties:
   stable/8/share/man/man3/   (props changed)
   stable/8/sys/   (props changed)
   stable/8/sys/amd64/include/xen/   (props changed)
   stable/8/sys/cddl/contrib/opensolaris/   (props changed)
   stable/8/sys/contrib/dev/acpica/   (props changed)
   stable/8/sys/contrib/pf/   (props changed)
 
 Modified: stable/8/share/man/man3/Makefile
 ==============================================================================
 --- stable/8/share/man/man3/Makefile	Tue May 24 15:47:40 2011	(r222260)
 +++ stable/8/share/man/man3/Makefile	Tue May 24 16:04:35 2011	(r222261)
 @@ -53,6 +53,7 @@ MLINKS+=	queue.3 LIST_EMPTY.3 \
  		queue.3 LIST_INSERT_HEAD.3 \
  		queue.3 LIST_NEXT.3 \
  		queue.3 LIST_REMOVE.3 \
 +		queue.3 LIST_SWAP.3 \
  		queue.3 SLIST_EMPTY.3 \
  		queue.3 SLIST_ENTRY.3 \
  		queue.3 SLIST_FIRST.3 \
 @@ -67,6 +68,7 @@ MLINKS+=	queue.3 LIST_EMPTY.3 \
  		queue.3 SLIST_REMOVE.3 \
  		queue.3 SLIST_REMOVE_AFTER.3 \
  		queue.3 SLIST_REMOVE_HEAD.3 \
 +		queue.3 SLIST_SWAP.3 \
  		queue.3 STAILQ_CONCAT.3 \
  		queue.3 STAILQ_EMPTY.3 \
  		queue.3 STAILQ_ENTRY.3 \
 @@ -84,6 +86,7 @@ MLINKS+=	queue.3 LIST_EMPTY.3 \
  		queue.3 STAILQ_REMOVE.3 \
  		queue.3 STAILQ_REMOVE_AFTER.3 \
  		queue.3 STAILQ_REMOVE_HEAD.3 \
 +		queue.3 STAILQ_SWAP.3 \
  		queue.3 TAILQ_CONCAT.3 \
  		queue.3 TAILQ_EMPTY.3 \
  		queue.3 TAILQ_ENTRY.3 \
 @@ -102,7 +105,8 @@ MLINKS+=	queue.3 LIST_EMPTY.3 \
  		queue.3 TAILQ_LAST.3 \
  		queue.3 TAILQ_NEXT.3 \
  		queue.3 TAILQ_PREV.3 \
 -		queue.3 TAILQ_REMOVE.3
 +		queue.3 TAILQ_REMOVE.3 \
 +		queue.3 TAILQ_SWAP.3
  MLINKS+=	stdarg.3 va_arg.3 \
  		stdarg.3 va_copy.3 \
  		stdarg.3 va_end.3 \
 
 Modified: stable/8/share/man/man3/queue.3
 ==============================================================================
 --- stable/8/share/man/man3/queue.3	Tue May 24 15:47:40 2011	(r222260)
 +++ stable/8/share/man/man3/queue.3	Tue May 24 16:04:35 2011	(r222261)
 @@ -32,7 +32,7 @@
  .\"	@(#)queue.3	8.2 (Berkeley) 1/24/94
  .\" $FreeBSD$
  .\"
 -.Dd March 24, 2006
 +.Dd May 13, 2011
  .Dt QUEUE 3
  .Os
  .Sh NAME
 @@ -50,6 +50,7 @@
  .Nm SLIST_REMOVE_AFTER ,
  .Nm SLIST_REMOVE_HEAD ,
  .Nm SLIST_REMOVE ,
 +.Nm SLIST_SWAP ,
  .Nm STAILQ_CONCAT ,
  .Nm STAILQ_EMPTY ,
  .Nm STAILQ_ENTRY ,
 @@ -67,6 +68,7 @@
  .Nm STAILQ_REMOVE_AFTER ,
  .Nm STAILQ_REMOVE_HEAD ,
  .Nm STAILQ_REMOVE ,
 +.Nm STAILQ_SWAP ,
  .Nm LIST_EMPTY ,
  .Nm LIST_ENTRY ,
  .Nm LIST_FIRST ,
 @@ -80,6 +82,7 @@
  .Nm LIST_INSERT_HEAD ,
  .Nm LIST_NEXT ,
  .Nm LIST_REMOVE ,
 +.Nm LIST_SWAP ,
  .Nm TAILQ_CONCAT ,
  .Nm TAILQ_EMPTY ,
  .Nm TAILQ_ENTRY ,
 @@ -98,7 +101,8 @@
  .Nm TAILQ_LAST ,
  .Nm TAILQ_NEXT ,
  .Nm TAILQ_PREV ,
 -.Nm TAILQ_REMOVE
 +.Nm TAILQ_REMOVE ,
 +.Nm TAILQ_SWAP
  .Nd implementations of singly-linked lists, singly-linked tail queues,
  lists and tail queues
  .Sh SYNOPSIS
 @@ -118,6 +122,7 @@ lists and tail queues
  .Fn SLIST_REMOVE_AFTER "TYPE *elm" "SLIST_ENTRY NAME"
  .Fn SLIST_REMOVE_HEAD "SLIST_HEAD *head" "SLIST_ENTRY NAME"
  .Fn SLIST_REMOVE "SLIST_HEAD *head" "TYPE *elm" "TYPE" "SLIST_ENTRY NAME"
 +.Fn SLIST_SWAP "SLIST_HEAD *head1" "SLIST_HEAD *head2" "SLIST_ENTRY NAME"
  .\"
  .Fn STAILQ_CONCAT "STAILQ_HEAD *head1" "STAILQ_HEAD *head2"
  .Fn STAILQ_EMPTY "STAILQ_HEAD *head"
 @@ -136,6 +141,7 @@ lists and tail queues
  .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 "STAILQ_HEAD *head" "TYPE *elm" "TYPE" "STAILQ_ENTRY NAME"
 +.Fn STAILQ_SWAP "STAILQ_HEAD *head1" "STAILQ_HEAD *head2" "STAILQ_ENTRY NAME"
  .\"
  .Fn LIST_EMPTY "LIST_HEAD *head"
  .Fn LIST_ENTRY "TYPE"
 @@ -150,6 +156,7 @@ lists and tail queues
  .Fn LIST_INSERT_HEAD "LIST_HEAD *head" "TYPE *elm" "LIST_ENTRY NAME"
  .Fn LIST_NEXT "TYPE *elm" "LIST_ENTRY NAME"
  .Fn LIST_REMOVE "TYPE *elm" "LIST_ENTRY NAME"
 +.Fn LIST_SWAP "LIST_HEAD *head1" "LIST_HEAD *head2" "TYPE" "LIST_ENTRY NAME"
  .\"
  .Fn TAILQ_CONCAT "TAILQ_HEAD *head1" "TAILQ_HEAD *head2" "TAILQ_ENTRY NAME"
  .Fn TAILQ_EMPTY "TAILQ_HEAD *head"
 @@ -170,6 +177,7 @@ lists and tail queues
  .Fn TAILQ_NEXT "TYPE *elm" "TAILQ_ENTRY NAME"
  .Fn TAILQ_PREV "TYPE *elm" "HEADNAME" "TAILQ_ENTRY NAME"
  .Fn TAILQ_REMOVE "TAILQ_HEAD *head" "TYPE *elm" "TAILQ_ENTRY NAME"
 +.Fn TAILQ_SWAP "TAILQ_HEAD *head1" "TAILQ_HEAD *head2" "TYPE" "TAILQ_ENTRY NAME"
  .\"
  .Sh DESCRIPTION
  These macros define and operate on four types of data structures:
 @@ -184,6 +192,8 @@ Insertion of a new entry after any eleme
  O(1) removal of an entry from the head of the list.
  .It
  Forward traversal through the list.
 +.It
 +Swawpping the contents of two lists.
  .El
  .Pp
  Singly-linked lists are the simplest of the four data structures
 @@ -402,6 +412,13 @@ The macro
  removes the element
  .Fa elm
  from the list.
 +.Pp
 +The macro
 +.Nm SLIST_SWAP
 +swaps the contents of
 +.Fa head1
 +and
 +.Fa head2 .
  .Sh SINGLY-LINKED LIST EXAMPLE
  .Bd -literal
  SLIST_HEAD(slisthead, entry) head =
 @@ -584,6 +601,13 @@ The macro
  removes the element
  .Fa elm
  from the tail queue.
 +.Pp
 +The macro
 +.Nm STAILQ_SWAP
 +swaps the contents of
 +.Fa head1
 +and
 +.Fa head2 .
  .Sh SINGLY-LINKED TAIL QUEUE EXAMPLE
  .Bd -literal
  STAILQ_HEAD(stailhead, entry) head =
 @@ -743,6 +767,13 @@ The macro
  removes the element
  .Fa elm
  from the list.
 +.Pp
 +The macro
 +.Nm LIST_SWAP
 +swaps the contents of
 +.Fa head1
 +and
 +.Fa head2 .
  .Sh LIST EXAMPLE
  .Bd -literal
  LIST_HEAD(listhead, entry) head =
 @@ -942,6 +973,13 @@ The macro
  removes the element
  .Fa elm
  from the tail queue.
 +.Pp
 +The macro
 +.Nm TAILQ_SWAP
 +swaps the contents of
 +.Fa head1
 +and
 +.Fa head2 .
  .Sh TAIL QUEUE EXAMPLE
  .Bd -literal
  TAILQ_HEAD(tailhead, entry) head =
 
 Modified: stable/8/sys/sys/queue.h
 ==============================================================================
 --- stable/8/sys/sys/queue.h	Tue May 24 15:47:40 2011	(r222260)
 +++ stable/8/sys/sys/queue.h	Tue May 24 16:04:35 2011	(r222261)
 @@ -99,6 +99,7 @@
   * _REMOVE_AFTER		+	-	+	-
   * _REMOVE_HEAD			+	-	+	-
   * _REMOVE			+	+	+	+
 + * _SWAP			+	+	+	+
   *
   */
  #ifdef QUEUE_MACRO_DEBUG
 @@ -307,18 +308,18 @@ struct {								\
  	TRASHIT(*oldnext);						\
  } while (0)
  
 -#define	STAILQ_REMOVE_HEAD(head, field) do {				\
 -	if ((STAILQ_FIRST((head)) =					\
 -	     STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL)		\
 -		(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)
  
 +#define	STAILQ_REMOVE_HEAD(head, field) do {				\
 +	if ((STAILQ_FIRST((head)) =					\
 +	     STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL)		\
 +		(head)->stqh_last = &STAILQ_FIRST((head));		\
 +} while (0)
 +
  #define STAILQ_SWAP(head1, head2, type) do {				\
  	struct type *swap_first = STAILQ_FIRST(head1);			\
  	struct type **swap_last = (head1)->stqh_last;			\
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/143033: commit references a PR
Date: Tue, 24 May 2011 16:06:35 +0000 (UTC)

 Author: mdf
 Date: Tue May 24 16:06:26 2011
 New Revision: 222262
 URL: http://svn.freebsd.org/changeset/base/222262
 
 Log:
   MFC r221843:
   
   Note that the _SWAP operation is supported for all list/queue types.
   Also place STAILQ_REMOVE_HEAD in alphabetical order.  Lastly, document
   the _SWAP macros.
   
   PR:		kern/143033
 
 Modified:
   stable/7/share/man/man3/Makefile
   stable/7/share/man/man3/queue.3
   stable/7/sys/sys/queue.h
 Directory Properties:
   stable/7/share/man/man3/   (props changed)
   stable/7/sys/   (props changed)
   stable/7/sys/cddl/contrib/opensolaris/   (props changed)
   stable/7/sys/contrib/dev/acpica/   (props changed)
   stable/7/sys/contrib/pf/   (props changed)
 
 Modified: stable/7/share/man/man3/Makefile
 ==============================================================================
 --- stable/7/share/man/man3/Makefile	Tue May 24 16:04:35 2011	(r222261)
 +++ stable/7/share/man/man3/Makefile	Tue May 24 16:06:26 2011	(r222262)
 @@ -50,6 +50,7 @@ MLINKS+=	queue.3 LIST_EMPTY.3 \
  		queue.3 LIST_INSERT_HEAD.3 \
  		queue.3 LIST_NEXT.3 \
  		queue.3 LIST_REMOVE.3 \
 +		queue.3 LIST_SWAP.3 \
  		queue.3 SLIST_EMPTY.3 \
  		queue.3 SLIST_ENTRY.3 \
  		queue.3 SLIST_FIRST.3 \
 @@ -64,6 +65,7 @@ MLINKS+=	queue.3 LIST_EMPTY.3 \
  		queue.3 SLIST_REMOVE.3 \
  		queue.3 SLIST_REMOVE_AFTER.3 \
  		queue.3 SLIST_REMOVE_HEAD.3 \
 +		queue.3 SLIST_SWAP.3 \
  		queue.3 STAILQ_CONCAT.3 \
  		queue.3 STAILQ_EMPTY.3 \
  		queue.3 STAILQ_ENTRY.3 \
 @@ -81,6 +83,7 @@ MLINKS+=	queue.3 LIST_EMPTY.3 \
  		queue.3 STAILQ_REMOVE.3 \
  		queue.3 STAILQ_REMOVE_AFTER.3 \
  		queue.3 STAILQ_REMOVE_HEAD.3 \
 +		queue.3 STAILQ_SWAP.3 \
  		queue.3 TAILQ_CONCAT.3 \
  		queue.3 TAILQ_EMPTY.3 \
  		queue.3 TAILQ_ENTRY.3 \
 @@ -99,7 +102,8 @@ MLINKS+=	queue.3 LIST_EMPTY.3 \
  		queue.3 TAILQ_LAST.3 \
  		queue.3 TAILQ_NEXT.3 \
  		queue.3 TAILQ_PREV.3 \
 -		queue.3 TAILQ_REMOVE.3
 +		queue.3 TAILQ_REMOVE.3 \
 +		queue.3 TAILQ_SWAP.3
  MLINKS+=	stdarg.3 va_arg.3 \
  		stdarg.3 va_copy.3 \
  		stdarg.3 va_end.3 \
 
 Modified: stable/7/share/man/man3/queue.3
 ==============================================================================
 --- stable/7/share/man/man3/queue.3	Tue May 24 16:04:35 2011	(r222261)
 +++ stable/7/share/man/man3/queue.3	Tue May 24 16:06:26 2011	(r222262)
 @@ -32,7 +32,7 @@
  .\"	@(#)queue.3	8.2 (Berkeley) 1/24/94
  .\" $FreeBSD$
  .\"
 -.Dd March 24, 2006
 +.Dd May 13, 2011
  .Dt QUEUE 3
  .Os
  .Sh NAME
 @@ -50,6 +50,7 @@
  .Nm SLIST_REMOVE_AFTER ,
  .Nm SLIST_REMOVE_HEAD ,
  .Nm SLIST_REMOVE ,
 +.Nm SLIST_SWAP ,
  .Nm STAILQ_CONCAT ,
  .Nm STAILQ_EMPTY ,
  .Nm STAILQ_ENTRY ,
 @@ -67,6 +68,7 @@
  .Nm STAILQ_REMOVE_AFTER ,
  .Nm STAILQ_REMOVE_HEAD ,
  .Nm STAILQ_REMOVE ,
 +.Nm STAILQ_SWAP ,
  .Nm LIST_EMPTY ,
  .Nm LIST_ENTRY ,
  .Nm LIST_FIRST ,
 @@ -80,6 +82,7 @@
  .Nm LIST_INSERT_HEAD ,
  .Nm LIST_NEXT ,
  .Nm LIST_REMOVE ,
 +.Nm LIST_SWAP ,
  .Nm TAILQ_CONCAT ,
  .Nm TAILQ_EMPTY ,
  .Nm TAILQ_ENTRY ,
 @@ -98,7 +101,8 @@
  .Nm TAILQ_LAST ,
  .Nm TAILQ_NEXT ,
  .Nm TAILQ_PREV ,
 -.Nm TAILQ_REMOVE
 +.Nm TAILQ_REMOVE ,
 +.Nm TAILQ_SWAP
  .Nd implementations of singly-linked lists, singly-linked tail queues,
  lists and tail queues
  .Sh SYNOPSIS
 @@ -118,6 +122,7 @@ lists and tail queues
  .Fn SLIST_REMOVE_AFTER "TYPE *elm" "SLIST_ENTRY NAME"
  .Fn SLIST_REMOVE_HEAD "SLIST_HEAD *head" "SLIST_ENTRY NAME"
  .Fn SLIST_REMOVE "SLIST_HEAD *head" "TYPE *elm" "TYPE" "SLIST_ENTRY NAME"
 +.Fn SLIST_SWAP "SLIST_HEAD *head1" "SLIST_HEAD *head2" "SLIST_ENTRY NAME"
  .\"
  .Fn STAILQ_CONCAT "STAILQ_HEAD *head1" "STAILQ_HEAD *head2"
  .Fn STAILQ_EMPTY "STAILQ_HEAD *head"
 @@ -136,6 +141,7 @@ lists and tail queues
  .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 "STAILQ_HEAD *head" "TYPE *elm" "TYPE" "STAILQ_ENTRY NAME"
 +.Fn STAILQ_SWAP "STAILQ_HEAD *head1" "STAILQ_HEAD *head2" "STAILQ_ENTRY NAME"
  .\"
  .Fn LIST_EMPTY "LIST_HEAD *head"
  .Fn LIST_ENTRY "TYPE"
 @@ -150,6 +156,7 @@ lists and tail queues
  .Fn LIST_INSERT_HEAD "LIST_HEAD *head" "TYPE *elm" "LIST_ENTRY NAME"
  .Fn LIST_NEXT "TYPE *elm" "LIST_ENTRY NAME"
  .Fn LIST_REMOVE "TYPE *elm" "LIST_ENTRY NAME"
 +.Fn LIST_SWAP "LIST_HEAD *head1" "LIST_HEAD *head2" "TYPE" "LIST_ENTRY NAME"
  .\"
  .Fn TAILQ_CONCAT "TAILQ_HEAD *head1" "TAILQ_HEAD *head2" "TAILQ_ENTRY NAME"
  .Fn TAILQ_EMPTY "TAILQ_HEAD *head"
 @@ -170,6 +177,7 @@ lists and tail queues
  .Fn TAILQ_NEXT "TYPE *elm" "TAILQ_ENTRY NAME"
  .Fn TAILQ_PREV "TYPE *elm" "HEADNAME" "TAILQ_ENTRY NAME"
  .Fn TAILQ_REMOVE "TAILQ_HEAD *head" "TYPE *elm" "TAILQ_ENTRY NAME"
 +.Fn TAILQ_SWAP "TAILQ_HEAD *head1" "TAILQ_HEAD *head2" "TYPE" "TAILQ_ENTRY NAME"
  .\"
  .Sh DESCRIPTION
  These macros define and operate on four types of data structures:
 @@ -184,6 +192,8 @@ Insertion of a new entry after any eleme
  O(1) removal of an entry from the head of the list.
  .It
  Forward traversal through the list.
 +.It
 +Swawpping the contents of two lists.
  .El
  .Pp
  Singly-linked lists are the simplest of the four data structures
 @@ -402,6 +412,13 @@ The macro
  removes the element
  .Fa elm
  from the list.
 +.Pp
 +The macro
 +.Nm SLIST_SWAP
 +swaps the contents of
 +.Fa head1
 +and
 +.Fa head2 .
  .Sh SINGLY-LINKED LIST EXAMPLE
  .Bd -literal
  SLIST_HEAD(slisthead, entry) head =
 @@ -584,6 +601,13 @@ The macro
  removes the element
  .Fa elm
  from the tail queue.
 +.Pp
 +The macro
 +.Nm STAILQ_SWAP
 +swaps the contents of
 +.Fa head1
 +and
 +.Fa head2 .
  .Sh SINGLY-LINKED TAIL QUEUE EXAMPLE
  .Bd -literal
  STAILQ_HEAD(stailhead, entry) head =
 @@ -743,6 +767,13 @@ The macro
  removes the element
  .Fa elm
  from the list.
 +.Pp
 +The macro
 +.Nm LIST_SWAP
 +swaps the contents of
 +.Fa head1
 +and
 +.Fa head2 .
  .Sh LIST EXAMPLE
  .Bd -literal
  LIST_HEAD(listhead, entry) head =
 @@ -942,6 +973,13 @@ The macro
  removes the element
  .Fa elm
  from the tail queue.
 +.Pp
 +The macro
 +.Nm TAILQ_SWAP
 +swaps the contents of
 +.Fa head1
 +and
 +.Fa head2 .
  .Sh TAIL QUEUE EXAMPLE
  .Bd -literal
  TAILQ_HEAD(tailhead, entry) head =
 
 Modified: stable/7/sys/sys/queue.h
 ==============================================================================
 --- stable/7/sys/sys/queue.h	Tue May 24 16:04:35 2011	(r222261)
 +++ stable/7/sys/sys/queue.h	Tue May 24 16:06:26 2011	(r222262)
 @@ -99,6 +99,7 @@
   * _REMOVE_AFTER		+	-	+	-
   * _REMOVE_HEAD			+	-	+	-
   * _REMOVE			+	+	+	+
 + * _SWAP			+	+	+	+
   *
   */
  #ifdef QUEUE_MACRO_DEBUG
 @@ -301,18 +302,18 @@ struct {								\
  	TRASHIT(*oldnext);						\
  } while (0)
  
 -#define	STAILQ_REMOVE_HEAD(head, field) do {				\
 -	if ((STAILQ_FIRST((head)) =					\
 -	     STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL)		\
 -		(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)
  
 +#define	STAILQ_REMOVE_HEAD(head, field) do {				\
 +	if ((STAILQ_FIRST((head)) =					\
 +	     STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL)		\
 +		(head)->stqh_last = &STAILQ_FIRST((head));		\
 +} while (0)
 +
  #define STAILQ_SWAP(head1, head2, type) do {				\
  	struct type *swap_first = STAILQ_FIRST(head1);			\
  	struct type **swap_last = (head1)->stqh_last;			\
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
State-Changed-From-To: patched->closed 
State-Changed-By: eadler 
State-Changed-When: Fri Nov 2 22:22:43 UTC 2012 
State-Changed-Why:  
MFCed/fixed by now or it will never be MFCed 

http://www.freebsd.org/cgi/query-pr.cgi?pr=143033 
>Unformatted:
