Messages in this thread | ![/](/images/icornerl.gif) | | Date | Tue, 24 Jun 2003 03:29:04 -0700 | From | Andrew Morton <> | Subject | Re: Provide example copy_in_user implementation |
| |
Pavel Machek <pavel@ucw.cz> wrote: > > +static inline unsigned long copy_in_user(void *dst, const void *src, unsigned size) > +{ > + unsigned i, ret; > + unsigned char c; > + for (i=0; i<size; i++) { > + if (copy_from_user(&c, src+i, 1)) > + return size-i; > + if (copy_to_user(dst+i, &c, 1)) > + return size-i; > + } > + return 0; > +} > +
I know that this is usually not performance critical, but by gawd that code is inefficient and bloaty.
It has 18 callsites; it can be put in lib/lib.a:copy_in_user.o. The access_ok() checks only need to be run once. It can copy a cacheline at a time. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| ![\](/images/icornerr.gif) |