PERFORCE change 83533 for review

Robert Watson rwatson at FreeBSD.org
Tue Sep 13 03:35:37 PDT 2005


http://perforce.freebsd.org/chv.cgi?CH=83533

Change 83533 by rwatson at rwatson_zoo on 2005/09/13 10:35:22

	Kqueue and sockets guarantee that socket buffers will be locked
	when entering the filter for a socket buffer event.  Assert instead
	of conditionally acquiring.

Affected files ...

.. //depot/projects/netsmp/src/sys/fs/fifofs/fifo_vnops.c#11 edit

Differences ...

==== //depot/projects/netsmp/src/sys/fs/fifofs/fifo_vnops.c#11 (text+ko) ====

@@ -393,22 +393,16 @@
 filt_fiforead(struct knote *kn, long hint)
 {
 	struct socket *so = (struct socket *)kn->kn_hook;
-	int need_lock, result;
 
-	need_lock = !SOCKBUF_OWNED(&so->so_rcv);
-	if (need_lock)
-		SOCKBUF_LOCK(&so->so_rcv);
+	SOCKBUF_LOCK_ASSERT(&so->so_rcv);
 	kn->kn_data = so->so_rcv.sb_cc;
 	if (so->so_rcv.sb_state & SBS_CANTRCVMORE) {
 		kn->kn_flags |= EV_EOF;
-		result = 1;
+		return (1);
 	} else {
 		kn->kn_flags &= ~EV_EOF;
-		result = (kn->kn_data > 0);
+		return (kn->kn_data > 0);
 	}
-	if (need_lock)
-		SOCKBUF_UNLOCK(&so->so_rcv);
-	return (result);
 }
 
 static void
@@ -427,22 +421,16 @@
 filt_fifowrite(struct knote *kn, long hint)
 {
 	struct socket *so = (struct socket *)kn->kn_hook;
-	int need_lock, result;
 
-	need_lock = !SOCKBUF_OWNED(&so->so_snd);
-	if (need_lock)
-		SOCKBUF_LOCK(&so->so_snd);
+	SOCKBUF_LOCK_ASSERT(&so->so_snd);
 	kn->kn_data = sbspace(&so->so_snd);
 	if (so->so_snd.sb_state & SBS_CANTSENDMORE) {
 		kn->kn_flags |= EV_EOF;
-		result = 1;
+		return (1);
 	} else {
 		kn->kn_flags &= ~EV_EOF;
-	        result = (kn->kn_data >= so->so_snd.sb_lowat);
+	        return (kn->kn_data >= so->so_snd.sb_lowat);
 	}
-	if (need_lock)
-		SOCKBUF_UNLOCK(&so->so_snd);
-	return (result);
 }
 
 static void


More information about the p4-projects mailing list