Module Name: src Committed By: njoly Date: Fri Apr 4 18:17:36 UTC 2014
Modified Files: src/sys/compat/common: Makefile kern_time_50.c src/sys/modules/compat: Makefile Added Files: src/sys/compat/common: kern_50.c Log Message: Move a few compat 50 syscalls, not applicable to rump kernels, out of kern_time_50.c to a new source module. To generate a diff of this commit: cvs rdiff -u -r1.51 -r1.52 src/sys/compat/common/Makefile cvs rdiff -u -r0 -r1.1 src/sys/compat/common/kern_50.c cvs rdiff -u -r1.26 -r1.27 src/sys/compat/common/kern_time_50.c cvs rdiff -u -r1.9 -r1.10 src/sys/modules/compat/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/compat/common/Makefile diff -u src/sys/compat/common/Makefile:1.51 src/sys/compat/common/Makefile:1.52 --- src/sys/compat/common/Makefile:1.51 Fri Mar 29 01:02:49 2013 +++ src/sys/compat/common/Makefile Fri Apr 4 18:17:36 2014 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.51 2013/03/29 01:02:49 christos Exp $ +# $NetBSD: Makefile,v 1.52 2014/04/04 18:17:36 njoly Exp $ LIB= compat NOPIC= # defined @@ -40,7 +40,7 @@ SRCS+= kern_time_30.c vfs_syscalls_30.c SRCS+= vfs_syscalls_40.c uipc_syscalls_40.c # Compatibility code for NetBSD 5.0 -SRCS+= kern_time_50.c kern_select_50.c rndpseudo_50.c rtsock_50.c \ +SRCS+= kern_50.c kern_time_50.c kern_select_50.c rndpseudo_50.c rtsock_50.c \ sysv_ipc_50.c sysv_msg_50.c sysv_sem_50.c sysv_shm_50.c \ vfs_syscalls_50.c uipc_syscalls_50.c Index: src/sys/compat/common/kern_time_50.c diff -u src/sys/compat/common/kern_time_50.c:1.26 src/sys/compat/common/kern_time_50.c:1.27 --- src/sys/compat/common/kern_time_50.c:1.26 Fri Mar 29 01:02:49 2013 +++ src/sys/compat/common/kern_time_50.c Fri Apr 4 18:17:36 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_time_50.c,v 1.26 2013/03/29 01:02:49 christos Exp $ */ +/* $NetBSD: kern_time_50.c,v 1.27 2014/04/04 18:17:36 njoly Exp $ */ /*- * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc. @@ -29,7 +29,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_time_50.c,v 1.26 2013/03/29 01:02:49 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_time_50.c,v 1.27 2014/04/04 18:17:36 njoly Exp $"); #ifdef _KERNEL_OPT #include "opt_aio.h" @@ -350,39 +350,6 @@ out: } int -compat_50_sys__lwp_park(struct lwp *l, - const struct compat_50_sys__lwp_park_args *uap, register_t *retval) -{ - /* { - syscallarg(const struct timespec50 *) ts; - syscallarg(lwpid_t) unpark; - syscallarg(const void *) hint; - syscallarg(const void *) unparkhint; - } */ - struct timespec ts, *tsp; - struct timespec50 ts50; - int error; - - if (SCARG(uap, ts) == NULL) - tsp = NULL; - else { - error = copyin(SCARG(uap, ts), &ts50, sizeof(ts50)); - if (error != 0) - return error; - timespec50_to_timespec(&ts50, &ts); - tsp = &ts; - } - - if (SCARG(uap, unpark) != 0) { - error = lwp_unpark(SCARG(uap, unpark), SCARG(uap, unparkhint)); - if (error != 0) - return error; - } - - return lwp_park(CLOCK_REALTIME, TIMER_ABSTIME, tsp, SCARG(uap, hint)); -} - -int compat_50_sys_mq_timedsend(struct lwp *l, const struct compat_50_sys_mq_timedsend_args *uap, register_t *retval) { @@ -456,44 +423,6 @@ compat_50_sys_mq_timedreceive(struct lwp #endif } -static int -tscopyin(const void *u, void *s, size_t len) -{ - struct timespec50 ts50; - int error; - - KASSERT(len == sizeof(struct timespec)); - error = copyin(u, &ts50, sizeof(ts50)); - if (error) - return error; - timespec50_to_timespec(&ts50, s); - return 0; -} - -static int -tscopyout(const void *s, void *u, size_t len) -{ - struct timespec50 ts50; - - KASSERT(len == sizeof(struct timespec)); - timespec_to_timespec50(s, &ts50); - return copyout(&ts50, u, sizeof(ts50)); -} - -int -compat_50_sys___sigtimedwait(struct lwp *l, - const struct compat_50_sys___sigtimedwait_args *uap, register_t *retval) -{ - int res; - - res = sigtimedwait1(l, - (const struct sys_____sigtimedwait50_args *)uap, retval, copyin, - copyout, tscopyin, tscopyout); - if (!res) - *retval = 0; /* XXX NetBSD<=5 was not POSIX compliant */ - return res; -} - void rusage_to_rusage50(const struct rusage *ru, struct rusage50 *ru50) { @@ -679,37 +608,6 @@ compat50_clockctlioctl(dev_t dev, u_long return (error); } -int -compat_50_sys_wait4(struct lwp *l, const struct compat_50_sys_wait4_args *uap, - register_t *retval) -{ - /* { - syscallarg(int) pid; - syscallarg(int *) status; - syscallarg(int) options; - syscallarg(struct rusage50 *) rusage; - } */ - int status, error, pid = SCARG(uap, pid); - struct rusage50 ru50; - struct rusage ru; - - error = do_sys_wait(&pid, &status, SCARG(uap, options), - SCARG(uap, rusage) != NULL ? &ru : NULL); - - retval[0] = pid; - if (pid == 0) - return error; - - if (SCARG(uap, rusage)) { - rusage_to_rusage50(&ru, &ru50); - error = copyout(&ru50, SCARG(uap, rusage), sizeof(ru50)); - } - - if (error == 0 && SCARG(uap, status)) - error = copyout(&status, SCARG(uap, status), sizeof(status)); - - return error; -} void compat_sysctl_time(struct sysctllog **clog) Index: src/sys/modules/compat/Makefile diff -u src/sys/modules/compat/Makefile:1.9 src/sys/modules/compat/Makefile:1.10 --- src/sys/modules/compat/Makefile:1.9 Tue Apr 16 15:30:09 2013 +++ src/sys/modules/compat/Makefile Fri Apr 4 18:17:36 2014 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.9 2013/04/16 15:30:09 christos Exp $ +# $NetBSD: Makefile,v 1.10 2014/04/04 18:17:36 njoly Exp $ .include "../Makefile.inc" @@ -34,7 +34,7 @@ SRCS+= sysv_sem_14.c sysv_shm_14.c tty_4 SRCS+= uipc_syscalls_43.c vfs_syscalls_12.c kern_sig_16.c SRCS+= vfs_syscalls_20.c vfs_syscalls_30.c vfs_syscalls_40.c SRCS+= vfs_syscalls_43.c vm_12.c vm_43.c compat_mod.c -SRCS+= sysv_msg_50.c sysv_sem_50.c kern_time_50.c +SRCS+= sysv_msg_50.c sysv_sem_50.c kern_time_50.c kern_50.c SRCS+= sysv_shm_50.c vfs_syscalls_50.c sysv_ipc_50.c SRCS+= tty_60.c kern_time_60.c Added files: Index: src/sys/compat/common/kern_50.c diff -u /dev/null src/sys/compat/common/kern_50.c:1.1 --- /dev/null Fri Apr 4 18:17:36 2014 +++ src/sys/compat/common/kern_50.c Fri Apr 4 18:17:36 2014 @@ -0,0 +1,143 @@ +/* $NetBSD: kern_50.c,v 1.1 2014/04/04 18:17:36 njoly Exp $ */ + +/*- + * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Christos Zoulas. + * + * 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 NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``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 FOUNDATION 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: kern_50.c,v 1.1 2014/04/04 18:17:36 njoly Exp $"); + +#include <sys/param.h> +#include <sys/lwp.h> +#include <sys/proc.h> +#include <sys/syscallargs.h> + +#include <compat/sys/resource.h> +#include <compat/sys/time.h> + +int +compat_50_sys__lwp_park(struct lwp *l, + const struct compat_50_sys__lwp_park_args *uap, register_t *retval) +{ + /* { + syscallarg(const struct timespec50 *) ts; + syscallarg(lwpid_t) unpark; + syscallarg(const void *) hint; + syscallarg(const void *) unparkhint; + } */ + struct timespec ts, *tsp; + struct timespec50 ts50; + int error; + + if (SCARG(uap, ts) == NULL) + tsp = NULL; + else { + error = copyin(SCARG(uap, ts), &ts50, sizeof(ts50)); + if (error != 0) + return error; + timespec50_to_timespec(&ts50, &ts); + tsp = &ts; + } + + if (SCARG(uap, unpark) != 0) { + error = lwp_unpark(SCARG(uap, unpark), SCARG(uap, unparkhint)); + if (error != 0) + return error; + } + + return lwp_park(CLOCK_REALTIME, TIMER_ABSTIME, tsp, SCARG(uap, hint)); +} + +static int +tscopyin(const void *u, void *s, size_t len) +{ + struct timespec50 ts50; + int error; + + KASSERT(len == sizeof(struct timespec)); + error = copyin(u, &ts50, sizeof(ts50)); + if (error) + return error; + timespec50_to_timespec(&ts50, s); + return 0; +} + +static int +tscopyout(const void *s, void *u, size_t len) +{ + struct timespec50 ts50; + + KASSERT(len == sizeof(struct timespec)); + timespec_to_timespec50(s, &ts50); + return copyout(&ts50, u, sizeof(ts50)); +} + +int +compat_50_sys___sigtimedwait(struct lwp *l, + const struct compat_50_sys___sigtimedwait_args *uap, register_t *retval) +{ + int res; + + res = sigtimedwait1(l, + (const struct sys_____sigtimedwait50_args *)uap, retval, copyin, + copyout, tscopyin, tscopyout); + if (!res) + *retval = 0; /* XXX NetBSD<=5 was not POSIX compliant */ + return res; +} + +int +compat_50_sys_wait4(struct lwp *l, const struct compat_50_sys_wait4_args *uap, + register_t *retval) +{ + /* { + syscallarg(int) pid; + syscallarg(int *) status; + syscallarg(int) options; + syscallarg(struct rusage50 *) rusage; + } */ + int status, error, pid = SCARG(uap, pid); + struct rusage50 ru50; + struct rusage ru; + + error = do_sys_wait(&pid, &status, SCARG(uap, options), + SCARG(uap, rusage) != NULL ? &ru : NULL); + + retval[0] = pid; + if (pid == 0) + return error; + + if (SCARG(uap, rusage)) { + rusage_to_rusage50(&ru, &ru50); + error = copyout(&ru50, SCARG(uap, rusage), sizeof(ru50)); + } + + if (error == 0 && SCARG(uap, status)) + error = copyout(&status, SCARG(uap, status), sizeof(status)); + + return error; +}