svn commit: r189489 - head/sys/net

Robert Watson rwatson at FreeBSD.org
Sat Mar 7 02:21:38 PST 2009


Author: rwatson
Date: Sat Mar  7 10:21:37 2009
New Revision: 189489
URL: http://svn.freebsd.org/changeset/base/189489

Log:
  Clarify some comments, fix some types, and rename ZBUF_FLAG_IMMUTABLE to
  ZBUF_FLAG_ASSIGNED to make it clear why the buffer can't be written to:
  it is assigned to userspace.

Modified:
  head/sys/net/bpf_zerocopy.c

Modified: head/sys/net/bpf_zerocopy.c
==============================================================================
--- head/sys/net/bpf_zerocopy.c	Sat Mar  7 07:26:22 2009	(r189488)
+++ head/sys/net/bpf_zerocopy.c	Sat Mar  7 10:21:37 2009	(r189489)
@@ -91,7 +91,7 @@ __FBSDID("$FreeBSD$");
  * knows that the space is not available.
  */
 struct zbuf {
-	vm_offset_t	 zb_uaddr;	/* User address, may be stale. */
+	vm_offset_t	 zb_uaddr;	/* User address at time of setup. */
 	size_t		 zb_size;	/* Size of buffer, incl. header. */
 	u_int		 zb_numpages;	/* Number of pages. */
 	int		 zb_flags;	/* Flags on zbuf. */
@@ -104,7 +104,7 @@ struct zbuf {
  * buffer may remain in the store position as a result of the user process
  * not yet having acknowledged the buffer in the hold position yet.
  */
-#define	ZBUF_FLAG_IMMUTABLE	0x00000001	/* Set when owned by user. */
+#define	ZBUF_FLAG_ASSIGNED	0x00000001	/* Set when owned by user. */
 
 /*
  * Release a page we've previously wired.
@@ -262,8 +262,8 @@ bpf_zerocopy_append_bytes(struct bpf_d *
 	src_bytes = (u_char *)src;
 	zb = (struct zbuf *)buf;
 
-	KASSERT((zb->zb_flags & ZBUF_FLAG_IMMUTABLE) == 0,
-	    ("bpf_zerocopy_append_bytes: ZBUF_FLAG_IMMUTABLE"));
+	KASSERT((zb->zb_flags & ZBUF_FLAG_ASSIGNED) == 0,
+	    ("bpf_zerocopy_append_bytes: ZBUF_FLAG_ASSIGNED"));
 
 	/*
 	 * Scatter-gather copy to user pages mapped into kernel address space
@@ -314,8 +314,8 @@ bpf_zerocopy_append_mbuf(struct bpf_d *d
 	m = (struct mbuf *)src;
 	zb = (struct zbuf *)buf;
 
-	KASSERT((zb->zb_flags & ZBUF_FLAG_IMMUTABLE) == 0,
-	    ("bpf_zerocopy_append_mbuf: ZBUF_FLAG_IMMUTABLE"));
+	KASSERT((zb->zb_flags & ZBUF_FLAG_ASSIGNED) == 0,
+	    ("bpf_zerocopy_append_mbuf: ZBUF_FLAG_ASSIGNED"));
 
 	/*
 	 * Scatter gather both from an mbuf chain and to a user page set
@@ -374,8 +374,8 @@ bpf_zerocopy_buffull(struct bpf_d *d)
 	zb = (struct zbuf *)d->bd_sbuf;
 	KASSERT(zb != NULL, ("bpf_zerocopy_buffull: zb == NULL"));
 
-	if ((zb->zb_flags & ZBUF_FLAG_IMMUTABLE) == 0) {
-		zb->zb_flags |= ZBUF_FLAG_IMMUTABLE;
+	if ((zb->zb_flags & ZBUF_FLAG_ASSIGNED) == 0) {
+		zb->zb_flags |= ZBUF_FLAG_ASSIGNED;
 		zb->zb_header->bzh_kernel_len = d->bd_slen;
 		atomic_add_rel_int(&zb->zb_header->bzh_kernel_gen, 1);
 	}
@@ -384,9 +384,8 @@ bpf_zerocopy_buffull(struct bpf_d *d)
 /*
  * Notification from the BPF framework that a buffer has moved into the held
  * slot on a descriptor.  Zero-copy BPF will update the shared page to let
- * the user process know and flag the buffer as immutable if it hasn't
- * already been marked immutable due to filling while it was in the store
- * position.
+ * the user process know and flag the buffer as assigned if it hasn't already
+ * been marked assigned due to filling while it was in the store position.
  *
  * Note: identical logic as in bpf_zerocopy_buffull(), except that we operate
  * on bd_hbuf and bd_hlen.
@@ -402,8 +401,8 @@ bpf_zerocopy_bufheld(struct bpf_d *d)
 	zb = (struct zbuf *)d->bd_hbuf;
 	KASSERT(zb != NULL, ("bpf_zerocopy_bufheld: zb == NULL"));
 
-	if ((zb->zb_flags & ZBUF_FLAG_IMMUTABLE) == 0) {
-		zb->zb_flags |= ZBUF_FLAG_IMMUTABLE;
+	if ((zb->zb_flags & ZBUF_FLAG_ASSIGNED) == 0) {
+		zb->zb_flags |= ZBUF_FLAG_ASSIGNED;
 		zb->zb_header->bzh_kernel_len = d->bd_hlen;
 		atomic_add_rel_int(&zb->zb_header->bzh_kernel_gen, 1);
 	}
@@ -411,7 +410,8 @@ bpf_zerocopy_bufheld(struct bpf_d *d)
 
 /*
  * Notification from the BPF framework that the free buffer has been been
- * re-assigned.  This happens when the user ackknowledges the buffer.
+ * rotated out of the held position to the free position.  This happens when
+ * the user acknowledges the held buffer.
  */
 void
 bpf_zerocopy_buf_reclaimed(struct bpf_d *d)
@@ -422,9 +422,9 @@ bpf_zerocopy_buf_reclaimed(struct bpf_d 
 	    ("bpf_zerocopy_reclaim_buf: not in zbuf mode"));
 
 	KASSERT(d->bd_fbuf != NULL,
-	    ("bpf_zerocopy_buf_reclaimed: NULL free buff"));
+	    ("bpf_zerocopy_buf_reclaimed: NULL free buf"));
 	zb = (struct zbuf *)d->bd_fbuf;
-	zb->zb_flags &= ~ZBUF_FLAG_IMMUTABLE;
+	zb->zb_flags &= ~ZBUF_FLAG_ASSIGNED;
 }
 
 /*
@@ -467,7 +467,7 @@ bpf_zerocopy_canwritebuf(struct bpf_d *d
 	zb = (struct zbuf *)d->bd_sbuf;
 	KASSERT(zb != NULL, ("bpf_zerocopy_canwritebuf: bd_sbuf NULL"));
 
-	if (zb->zb_flags & ZBUF_FLAG_IMMUTABLE)
+	if (zb->zb_flags & ZBUF_FLAG_ASSIGNED)
 		return (0);
 	return (1);
 }
@@ -510,7 +510,7 @@ bpf_zerocopy_ioctl_getzmax(struct thread
 
 /*
  * Ioctl to force rotation of the two buffers, if there's any data available.
- * This can be used by user space to implement time outs when waiting for a
+ * This can be used by user space to implement timeouts when waiting for a
  * buffer to fill.
  */
 int


More information about the svn-src-all mailing list