PERFORCE change 53924 for review
Robert Watson
rwatson at FreeBSD.org
Mon May 31 19:58:07 PDT 2004
http://perforce.freebsd.org/chv.cgi?CH=53924
Change 53924 by rwatson at rwatson_tislabs on 2004/05/31 19:57:28
Integrate rwatson_netperf_merge:
- More module.h cleanup
- Don Lewis's introduction of MSG_NBIO to avoid frobbing SS_NBIO
in fifofs resulting in races with other fifo consumers.
- Loopback of so_qstate and SQ_INCOMP/SQ_COMP.
Affected files ...
.. //depot/projects/netperf_socket/sys/fs/fifofs/fifo_vnops.c#5 integrate
.. //depot/projects/netperf_socket/sys/i386/i386/nexus.c#3 integrate
.. //depot/projects/netperf_socket/sys/kern/uipc_socket.c#12 integrate
.. //depot/projects/netperf_socket/sys/kern/uipc_socket2.c#10 integrate
.. //depot/projects/netperf_socket/sys/kern/uipc_syscalls.c#12 integrate
.. //depot/projects/netperf_socket/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c#4 integrate
.. //depot/projects/netperf_socket/sys/netgraph/ng_ksocket.c#4 integrate
.. //depot/projects/netperf_socket/sys/sys/socket.h#6 integrate
.. //depot/projects/netperf_socket/sys/sys/socketvar.h#6 integrate
.. //depot/projects/netperf_socket/sys/vm/uma.h#3 integrate
Differences ...
==== //depot/projects/netperf_socket/sys/fs/fifofs/fifo_vnops.c#5 (text+ko) ====
@@ -27,7 +27,7 @@
* SUCH DAMAGE.
*
* @(#)fifo_vnops.c 8.10 (Berkeley) 5/27/95
- * $FreeBSD: src/sys/fs/fifofs/fifo_vnops.c,v 1.94 2004/05/17 20:16:40 truckman Exp $
+ * $FreeBSD: src/sys/fs/fifofs/fifo_vnops.c,v 1.95 2004/06/01 01:18:50 truckman Exp $
*/
#include <sys/param.h>
@@ -312,7 +312,7 @@
struct uio *uio = ap->a_uio;
struct socket *rso = ap->a_vp->v_fifoinfo->fi_readsock;
struct thread *td = uio->uio_td;
- int error;
+ int error, flags;
#ifdef DIAGNOSTIC
if (uio->uio_rw != UIO_READ)
@@ -320,14 +320,11 @@
#endif
if (uio->uio_resid == 0)
return (0);
- if (ap->a_ioflag & IO_NDELAY)
- rso->so_state |= SS_NBIO;
VOP_UNLOCK(ap->a_vp, 0, td);
+ flags = (ap->a_ioflag & IO_NDELAY) ? MSG_NBIO : 0;
error = soreceive(rso, (struct sockaddr **)0, uio, (struct mbuf **)0,
- (struct mbuf **)0, (int *)0);
+ (struct mbuf **)0, &flags);
vn_lock(ap->a_vp, LK_EXCLUSIVE | LK_RETRY, td);
- if (ap->a_ioflag & IO_NDELAY)
- rso->so_state &= ~SS_NBIO;
return (error);
}
@@ -346,20 +343,17 @@
{
struct socket *wso = ap->a_vp->v_fifoinfo->fi_writesock;
struct thread *td = ap->a_uio->uio_td;
- int error;
+ int error, flags;
#ifdef DIAGNOSTIC
if (ap->a_uio->uio_rw != UIO_WRITE)
panic("fifo_write mode");
#endif
- if (ap->a_ioflag & IO_NDELAY)
- wso->so_state |= SS_NBIO;
VOP_UNLOCK(ap->a_vp, 0, td);
+ flags = (ap->a_ioflag & IO_NDELAY) ? MSG_NBIO : 0;
error = sosend(wso, (struct sockaddr *)0, ap->a_uio, 0,
- (struct mbuf *)0, 0, td);
+ (struct mbuf *)0, flags, td);
vn_lock(ap->a_vp, LK_EXCLUSIVE | LK_RETRY, td);
- if (ap->a_ioflag & IO_NDELAY)
- wso->so_state &= ~SS_NBIO;
return (error);
}
==== //depot/projects/netperf_socket/sys/i386/i386/nexus.c#3 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/nexus.c,v 1.55 2004/05/04 21:02:56 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/nexus.c,v 1.56 2004/06/01 01:04:25 njl Exp $");
/*
* This code implements a `root nexus' for Intel Architecture
@@ -519,8 +519,6 @@
struct resource_list_entry *rle;
rle = resource_list_find(rl, type, rid);
- device_printf(child, "type %d rid %d startp %p countp %p - got %p\n",
- type, rid, startp, countp, rle);
if (!rle)
return(ENOENT);
if (startp)
==== //depot/projects/netperf_socket/sys/kern/uipc_socket.c#12 (text+ko) ====
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/uipc_socket.c,v 1.171 2004/05/31 21:46:04 bmilekic Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/uipc_socket.c,v 1.173 2004/06/01 02:42:55 rwatson Exp $");
#include "opt_inet.h"
#include "opt_mac.h"
@@ -299,10 +299,10 @@
SOCKBUF_LOCK(&so->so_rcv);
if (so->so_head != NULL) {
head = so->so_head;
- if (so->so_state & SS_INCOMP) {
+ if (so->so_qstate & SQ_INCOMP) {
TAILQ_REMOVE(&head->so_incomp, so, so_list);
head->so_incqlen--;
- } else if (so->so_state & SS_COMP) {
+ } else if (so->so_qstate & SQ_COMP) {
/*
* We must not decommission a socket that's
* on the accept(2) queue. If we do, then
@@ -314,7 +314,7 @@
} else {
panic("sofree: not queued");
}
- so->so_state &= ~SS_INCOMP;
+ so->so_qstate &= ~SQ_INCOMP;
so->so_head = NULL;
}
SOCKBUF_UNLOCK(&so->so_rcv);
@@ -359,7 +359,7 @@
/* Dequeue from so_comp since sofree() won't do it */
TAILQ_REMOVE(&so->so_comp, sp, so_list);
so->so_qlen--;
- sp->so_state &= ~SS_COMP;
+ sp->so_qstate &= ~SQ_COMP;
sp->so_head = NULL;
(void) soabort(sp);
}
@@ -604,7 +604,7 @@
snderr(EMSGSIZE);
if (space < resid + clen &&
(atomic || space < so->so_snd.sb_lowat || space < clen)) {
- if (so->so_state & SS_NBIO)
+ if ((so->so_state & SS_NBIO) || (flags & MSG_NBIO))
snderr(EWOULDBLOCK);
error = sbwait(&so->so_snd);
if (error)
@@ -903,7 +903,8 @@
}
if (uio->uio_resid == 0)
goto release;
- if ((so->so_state & SS_NBIO) || (flags & MSG_DONTWAIT)) {
+ if ((so->so_state & SS_NBIO) ||
+ (flags & (MSG_DONTWAIT|MSG_NBIO))) {
error = EWOULDBLOCK;
goto release;
}
==== //depot/projects/netperf_socket/sys/kern/uipc_socket2.c#10 (text+ko) ====
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/uipc_socket2.c,v 1.125 2004/05/31 21:46:04 bmilekic Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/uipc_socket2.c,v 1.126 2004/06/01 02:42:55 rwatson Exp $");
#include "opt_mac.h"
#include "opt_param.h"
@@ -125,7 +125,7 @@
SOCK_LOCK(so);
so->so_state &= ~(SS_ISCONNECTING|SS_ISDISCONNECTING|SS_ISCONFIRMING);
so->so_state |= SS_ISCONNECTED;
- if (head && (so->so_state & SS_INCOMP)) {
+ if (head && (so->so_qstate & SQ_INCOMP)) {
if ((so->so_options & SO_ACCEPTFILTER) == 0) {
if (need_lock)
SOCK_UNLOCK(so);
@@ -242,7 +242,7 @@
SOCKBUF_LOCK(&head->so_rcv);
if (connstatus) {
TAILQ_INSERT_TAIL(&head->so_comp, so, so_list);
- so->so_state |= SS_COMP;
+ so->so_qstate |= SQ_COMP;
head->so_qlen++;
} else {
if (head->so_incqlen > head->so_qlimit) {
@@ -251,7 +251,7 @@
(void) soabort(sp);
}
TAILQ_INSERT_TAIL(&head->so_incomp, so, so_list);
- so->so_state |= SS_INCOMP;
+ so->so_qstate |= SQ_INCOMP;
head->so_incqlen++;
}
SOCKBUF_UNLOCK(&head->so_rcv);
==== //depot/projects/netperf_socket/sys/kern/uipc_syscalls.c#12 (text+ko) ====
@@ -33,7 +33,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/uipc_syscalls.c,v 1.184 2004/05/31 21:46:04 bmilekic Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/uipc_syscalls.c,v 1.185 2004/06/01 02:42:55 rwatson Exp $");
#include "opt_compat.h"
#include "opt_ktrace.h"
@@ -346,7 +346,7 @@
/* connection has been removed from the listen queue */
KNOTE(&head->so_rcv.sb_sel.si_note, 0);
- so->so_state &= ~SS_COMP;
+ so->so_qstate &= ~SQ_COMP;
so->so_head = NULL;
pgid = fgetown(&head->so_sigio);
if (pgid != 0)
==== //depot/projects/netperf_socket/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c#4 (text+ko) ====
@@ -26,7 +26,7 @@
* SUCH DAMAGE.
*
* $Id: ng_btsocket_rfcomm.c,v 1.28 2003/09/14 23:29:06 max Exp $
- * $FreeBSD: src/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c,v 1.6 2004/04/27 16:38:15 emax Exp $
+ * $FreeBSD: src/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c,v 1.7 2004/06/01 02:42:56 rwatson Exp $
*/
#include <sys/param.h>
@@ -1369,7 +1369,7 @@
s0->l2so->so_qlen --;
soref(l2so);
- l2so->so_state &= ~SS_COMP;
+ l2so->so_qstate &= ~SQ_COMP;
l2so->so_state |= SS_NBIO;
l2so->so_head = NULL;
==== //depot/projects/netperf_socket/sys/netgraph/ng_ksocket.c#4 (text+ko) ====
@@ -36,7 +36,7 @@
*
* Author: Archie Cobbs <archie at freebsd.org>
*
- * $FreeBSD: src/sys/netgraph/ng_ksocket.c,v 1.40 2004/05/29 00:51:11 julian Exp $
+ * $FreeBSD: src/sys/netgraph/ng_ksocket.c,v 1.41 2004/06/01 02:42:55 rwatson Exp $
* $Whistle: ng_ksocket.c,v 1.1 1999/11/16 20:04:40 archie Exp $
*/
@@ -1204,7 +1204,7 @@
soref(so);
- so->so_state &= ~SS_COMP;
+ so->so_qstate &= ~SQ_COMP;
so->so_state |= SS_NBIO;
so->so_head = NULL;
==== //depot/projects/netperf_socket/sys/sys/socket.h#6 (text+ko) ====
@@ -27,7 +27,7 @@
* SUCH DAMAGE.
*
* @(#)socket.h 8.4 (Berkeley) 2/21/94
- * $FreeBSD: src/sys/sys/socket.h,v 1.79 2004/05/10 02:24:56 emax Exp $
+ * $FreeBSD: src/sys/sys/socket.h,v 1.80 2004/06/01 01:18:51 truckman Exp $
*/
#ifndef _SYS_SOCKET_H_
@@ -393,6 +393,7 @@
#if __BSD_VISIBLE
#define MSG_DONTWAIT 0x80 /* this message should be nonblocking */
#define MSG_EOF 0x100 /* data completes connection */
+#define MSG_NBIO 0x4000 /* FIONBIO mode, used by fifofs */
#define MSG_COMPAT 0x8000 /* used in sendit() */
#endif
==== //depot/projects/netperf_socket/sys/sys/socketvar.h#6 (text+ko) ====
@@ -27,7 +27,7 @@
* SUCH DAMAGE.
*
* @(#)socketvar.h 8.3 (Berkeley) 2/19/95
- * $FreeBSD: src/sys/sys/socketvar.h,v 1.111 2004/04/07 04:19:49 imp Exp $
+ * $FreeBSD: src/sys/sys/socketvar.h,v 1.112 2004/06/01 02:42:54 rwatson Exp $
*/
#ifndef _SYS_SOCKETVAR_H_
@@ -52,6 +52,7 @@
short so_options; /* from socket call, see socket.h */
short so_linger; /* time to linger while closing */
short so_state; /* internal state flags SS_*, below */
+ int so_qstate; /* internal state flags SQ_* */
void *so_pcb; /* protocol control block */
struct protosw *so_proto; /* protocol handle */
/*
@@ -163,11 +164,15 @@
#define SS_ASYNC 0x0200 /* async i/o notify */
#define SS_ISCONFIRMING 0x0400 /* deciding to accept connection req */
-#define SS_INCOMP 0x0800 /* unaccepted, incomplete connection */
-#define SS_COMP 0x1000 /* unaccepted, complete connection */
#define SS_ISDISCONNECTED 0x2000 /* socket disconnected from peer */
/*
+ * Socket state bits stored in so_qstate.
+ */
+#define SQ_INCOMP 0x0800 /* unaccepted, incomplete connection */
+#define SQ_COMP 0x1000 /* unaccepted, complete connection */
+
+/*
* Externalized form of struct socket used by the sysctl(3) interface.
*/
struct xsocket {
==== //depot/projects/netperf_socket/sys/vm/uma.h#3 (text+ko) ====
@@ -23,7 +23,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/sys/vm/uma.h,v 1.17 2004/05/31 21:46:05 bmilekic Exp $
+ * $FreeBSD: src/sys/vm/uma.h,v 1.18 2004/06/01 01:36:26 bmilekic Exp $
*
*/
@@ -185,9 +185,9 @@
* zinit/zfini (unset by default for master zone) with
* uma_zone_set_zinit/zfini() (note subtle 'z' prefix).
*
- * align A bitmask that corisponds to the requested alignment
- * eg 4 would be 0x3
- * flags A set of parameters that control the behavior of the zone
+ * master A reference to this zone's Master Zone (Primary Zone),
+ * which contains the backing Keg for the Secondary Zone
+ * being added.
*
* Returns:
* A pointer to a structure which is intended to be opaque to users of
More information about the p4-projects
mailing list