Date: Mon, 18 Mar 2002 15:00:06 -0800 (PST) From: Alfred Perlstein <bright@mu.org> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/36038 Message-ID: <200203182300.g2IN06i57659@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/36038; it has been noted by GNATS.
From: Alfred Perlstein <bright@mu.org>
To: freebsd-gnats-submit@FreeBSD.org, tim@robbins.dropbear.id.au
Cc:
Subject: Re: kern/36038
Date: Mon, 18 Mar 2002 14:53:02 -0800
Can you try this delta? Afaik UIO_NOCOPY means don't do anything
other than updating the uio as if the data had been copied.
Index: kern/subr_mchain.c
===================================================================
RCS file: /home/ncvs/src/sys/kern/subr_mchain.c,v
retrieving revision 1.4
diff -u -r1.4 subr_mchain.c
--- kern/subr_mchain.c 21 Feb 2002 16:23:38 -0000 1.4
+++ kern/subr_mchain.c 18 Mar 2002 22:56:15 -0000
@@ -497,6 +497,8 @@
while (count--)
*target++ = *s++;
continue;
+ case MB_NONE:
+ break;
}
target += count;
}
@@ -524,6 +526,20 @@
int mtype, error;
mtype = (uiop->uio_segflg == UIO_SYSSPACE) ? MB_MSYSTEM : MB_MUSER;
+ switch (uiop->uio_segflg) {
+ case UIO_USERSPACE:
+ case UIO_USERISPACE:
+ mtype = MB_MUSER;
+ break;
+ case UIO_SYSSPACE:
+ mtype = MB_MSYSTEM;
+ break;
+ case UIO_NOCOPY:
+ mtype = MB_NONE;
+ break;
+ default:
+ return EINVAL;
+ }
while (size > 0 && uiop->uio_resid) {
if (uiop->uio_iovcnt <= 0 || uiop->uio_iov == NULL)
return EFBIG;
Index: sys/mchain.h
===================================================================
RCS file: /home/ncvs/src/sys/sys/mchain.h,v
retrieving revision 1.3
diff -u -r1.3 mchain.h
--- sys/mchain.h 27 Feb 2002 17:15:50 -0000 1.3
+++ sys/mchain.h 18 Mar 2002 22:59:06 -0000
@@ -113,6 +113,7 @@
#define MB_MINLINE 2 /* use an inline copy loop */
#define MB_MZERO 3 /* bzero(), mb_put_mem only */
#define MB_MCUSTOM 4 /* use an user defined function */
+#define MB_NONE 5 /* don't copy (UIO_NOCOPY) */
struct mbuf;
struct mbchain;
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200203182300.g2IN06i57659>
