Module Name: src Committed By: pooka Date: Wed Nov 4 17:01:45 UTC 2009
Modified Files: src/sys/rump/librump/rumpkern: Makefile.rumpkern emul.c Added Files: src/sys/rump/librump/rumpkern: rumpcopy.c Log Message: move copy-related routines to their own module To generate a diff of this commit: cvs rdiff -u -r1.58 -r1.59 src/sys/rump/librump/rumpkern/Makefile.rumpkern cvs rdiff -u -r1.105 -r1.106 src/sys/rump/librump/rumpkern/emul.c cvs rdiff -u -r0 -r1.1 src/sys/rump/librump/rumpkern/rumpcopy.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/rump/librump/rumpkern/Makefile.rumpkern diff -u src/sys/rump/librump/rumpkern/Makefile.rumpkern:1.58 src/sys/rump/librump/rumpkern/Makefile.rumpkern:1.59 --- src/sys/rump/librump/rumpkern/Makefile.rumpkern:1.58 Wed Nov 4 16:55:20 2009 +++ src/sys/rump/librump/rumpkern/Makefile.rumpkern Wed Nov 4 17:01:45 2009 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.rumpkern,v 1.58 2009/11/04 16:55:20 pooka Exp $ +# $NetBSD: Makefile.rumpkern,v 1.59 2009/11/04 17:01:45 pooka Exp $ # .include "${RUMPTOP}/Makefile.rump" @@ -15,8 +15,9 @@ # # Source modules, first the ones specifically implemented for librump. # -SRCS= rump.c emul.c intr.c locks.c ltsleep.c percpu.c pool.c \ - scheduler.c sleepq.c sysproxy_socket.c vm.c +SRCS= rump.c rumpcopy.c emul.c intr.c locks.c ltsleep.c \ + percpu.c pool.c scheduler.c sleepq.c sysproxy_socket.c \ + vm.c # stubs # Index: src/sys/rump/librump/rumpkern/emul.c diff -u src/sys/rump/librump/rumpkern/emul.c:1.105 src/sys/rump/librump/rumpkern/emul.c:1.106 --- src/sys/rump/librump/rumpkern/emul.c:1.105 Wed Nov 4 16:55:20 2009 +++ src/sys/rump/librump/rumpkern/emul.c Wed Nov 4 17:01:45 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: emul.c,v 1.105 2009/11/04 16:55:20 pooka Exp $ */ +/* $NetBSD: emul.c,v 1.106 2009/11/04 17:01:45 pooka Exp $ */ /* * Copyright (c) 2007 Antti Kantee. All Rights Reserved. @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: emul.c,v 1.105 2009/11/04 16:55:20 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: emul.c,v 1.106 2009/11/04 17:01:45 pooka Exp $"); #include <sys/param.h> #include <sys/malloc.h> @@ -117,80 +117,6 @@ kmutex_t tty_lock; -int -copyin(const void *uaddr, void *kaddr, size_t len) -{ - - if (curproc->p_vmspace == &rump_vmspace) - memcpy(kaddr, uaddr, len); - else - rump_sysproxy_copyin(uaddr, kaddr, len); - return 0; -} - -int -copyout(const void *kaddr, void *uaddr, size_t len) -{ - - if (curproc->p_vmspace == &rump_vmspace) - memcpy(uaddr, kaddr, len); - else - rump_sysproxy_copyout(kaddr, uaddr, len); - return 0; -} - -int -subyte(void *uaddr, int byte) -{ - - if (curproc->p_vmspace == &rump_vmspace) - *(char *)uaddr = byte; - else - rump_sysproxy_copyout(&byte, uaddr, 1); - return 0; -} - -int -copystr(const void *kfaddr, void *kdaddr, size_t len, size_t *done) -{ - - return copyinstr(kfaddr, kdaddr, len, done); -} - -int -copyinstr(const void *uaddr, void *kaddr, size_t len, size_t *done) -{ - - if (curproc->p_vmspace == &rump_vmspace) - strlcpy(kaddr, uaddr, len); - else - rump_sysproxy_copyin(uaddr, kaddr, len); - if (done) - *done = strlen(kaddr)+1; /* includes termination */ - return 0; -} - -int -copyoutstr(const void *kaddr, void *uaddr, size_t len, size_t *done) -{ - - if (curproc->p_vmspace == &rump_vmspace) - strlcpy(uaddr, kaddr, len); - else - rump_sysproxy_copyout(kaddr, uaddr, len); - if (done) - *done = strlen(uaddr)+1; /* includes termination */ - return 0; -} - -int -kcopy(const void *src, void *dst, size_t len) -{ - - memcpy(dst, src, len); - return 0; -} - devclass_t device_class(device_t dev) { Added files: Index: src/sys/rump/librump/rumpkern/rumpcopy.c diff -u /dev/null src/sys/rump/librump/rumpkern/rumpcopy.c:1.1 --- /dev/null Wed Nov 4 17:01:45 2009 +++ src/sys/rump/librump/rumpkern/rumpcopy.c Wed Nov 4 17:01:45 2009 @@ -0,0 +1,112 @@ +/* $NetBSD: rumpcopy.c,v 1.1 2009/11/04 17:01:45 pooka Exp $ */ + +/* + * Copyright (c) 2009 Antti Kantee. All Rights Reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__KERNEL_RCSID(0, "$NetBSD: rumpcopy.c,v 1.1 2009/11/04 17:01:45 pooka Exp $"); + +#include <sys/param.h> +#include <sys/lwp.h> +#include <sys/systm.h> + +#include <rump/rump.h> + +#include "rump_private.h" + +int +copyin(const void *uaddr, void *kaddr, size_t len) +{ + + if (curproc->p_vmspace == &rump_vmspace) + memcpy(kaddr, uaddr, len); + else + rump_sysproxy_copyin(uaddr, kaddr, len); + return 0; +} + +int +copyout(const void *kaddr, void *uaddr, size_t len) +{ + + if (curproc->p_vmspace == &rump_vmspace) + memcpy(uaddr, kaddr, len); + else + rump_sysproxy_copyout(kaddr, uaddr, len); + return 0; +} + +int +subyte(void *uaddr, int byte) +{ + + if (curproc->p_vmspace == &rump_vmspace) + *(char *)uaddr = byte; + else + rump_sysproxy_copyout(&byte, uaddr, 1); + return 0; +} + +int +copystr(const void *kfaddr, void *kdaddr, size_t len, size_t *done) +{ + + return copyinstr(kfaddr, kdaddr, len, done); +} + +int +copyinstr(const void *uaddr, void *kaddr, size_t len, size_t *done) +{ + + if (curproc->p_vmspace == &rump_vmspace) + strlcpy(kaddr, uaddr, len); + else + rump_sysproxy_copyin(uaddr, kaddr, len); + if (done) + *done = strlen(kaddr)+1; /* includes termination */ + return 0; +} + +int +copyoutstr(const void *kaddr, void *uaddr, size_t len, size_t *done) +{ + + if (curproc->p_vmspace == &rump_vmspace) + strlcpy(uaddr, kaddr, len); + else + rump_sysproxy_copyout(kaddr, uaddr, len); + if (done) + *done = strlen(uaddr)+1; /* includes termination */ + return 0; +} + +int +kcopy(const void *src, void *dst, size_t len) +{ + + memcpy(dst, src, len); + return 0; +} +