Module Name: src Committed By: dholland Date: Wed Feb 1 05:40:01 UTC 2012
Modified Files: src/sys/compat/netbsd32: netbsd32.h netbsd32_netbsd.c netbsd32_syscall.h netbsd32_syscallargs.h netbsd32_syscalls.c netbsd32_sysent.c syscalls.master Log Message: Update compat_netbsd32 for new quotactl. To generate a diff of this commit: cvs rdiff -u -r1.89 -r1.90 src/sys/compat/netbsd32/netbsd32.h cvs rdiff -u -r1.177 -r1.178 src/sys/compat/netbsd32/netbsd32_netbsd.c cvs rdiff -u -r1.97 -r1.98 src/sys/compat/netbsd32/netbsd32_syscall.h \ src/sys/compat/netbsd32/netbsd32_syscallargs.h cvs rdiff -u -r1.96 -r1.97 src/sys/compat/netbsd32/netbsd32_syscalls.c \ src/sys/compat/netbsd32/netbsd32_sysent.c cvs rdiff -u -r1.90 -r1.91 src/sys/compat/netbsd32/syscalls.master 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/netbsd32/netbsd32.h diff -u src/sys/compat/netbsd32/netbsd32.h:1.89 src/sys/compat/netbsd32/netbsd32.h:1.90 --- src/sys/compat/netbsd32/netbsd32.h:1.89 Tue Jan 31 22:51:41 2012 +++ src/sys/compat/netbsd32/netbsd32.h Wed Feb 1 05:40:00 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: netbsd32.h,v 1.89 2012/01/31 22:51:41 matt Exp $ */ +/* $NetBSD: netbsd32.h,v 1.90 2012/02/01 05:40:00 dholland Exp $ */ /* * Copyright (c) 1998, 2001, 2008 Matthew R. Green @@ -68,7 +68,7 @@ typedef uint32_t netbsd32_uintptr_t; /* netbsd32_[u]int64 are machine dependent and defined below */ /* - * machine depedant section; must define: + * machine dependant section; must define: * netbsd32_pointer_t * - 32-bit pointer type, normally uint32_t but can be int32_t * for platforms which rely on sign-extension of pointers @@ -268,6 +268,67 @@ struct netbsd32_export_args30 { /* from <sys/poll.h> */ typedef netbsd32_pointer_t netbsd32_pollfdp_t; +/* from <sys/quotactl.h> */ +typedef netbsd32_pointer_t netbsd32_quotactlargsp_t; +struct netbsd32_quotactlargs { + unsigned qc_op; + union { + struct { + netbsd32_pointer_t qc_ret; + } stat; + struct { + int qc_idtype; + netbsd32_pointer_t qc_info; + } idtypestat; + struct { + int qc_objtype; + netbsd32_pointer_t qc_info; + } objtypestat; + struct { + netbsd32_pointer_t qc_key; + netbsd32_pointer_t qc_ret; + } get; + struct { + netbsd32_pointer_t qc_key; + netbsd32_pointer_t qc_val; + } put; + struct { + netbsd32_pointer_t qc_key; + } delete; + struct { + netbsd32_pointer_t qc_cursor; + } cursoropen; + struct { + netbsd32_pointer_t qc_cursor; + } cursorclose; + struct { + netbsd32_pointer_t qc_cursor; + unsigned qc_idtype; + } cursorskipidtype; + struct { + netbsd32_pointer_t qc_cursor; + netbsd32_pointer_t qc_keys; + netbsd32_pointer_t qc_vals; + unsigned qc_maxnum; + netbsd32_pointer_t qc_ret; + } cursorget; + struct { + netbsd32_pointer_t qc_cursor; + netbsd32_pointer_t qc_ret; + } cursoratend; + struct { + netbsd32_pointer_t qc_cursor; + } cursorrewind; + struct { + int qc_idtype; + netbsd32_pointer_t qc_quotafile; + } quotaon; + struct { + int qc_idtype; + } quotaoff; + } u; +}; + /* from <sys/resource.h> */ typedef netbsd32_pointer_t netbsd32_rusage50p_t; struct netbsd32_rusage50 { Index: src/sys/compat/netbsd32/netbsd32_netbsd.c diff -u src/sys/compat/netbsd32/netbsd32_netbsd.c:1.177 src/sys/compat/netbsd32/netbsd32_netbsd.c:1.178 --- src/sys/compat/netbsd32/netbsd32_netbsd.c:1.177 Tue Jan 31 22:53:56 2012 +++ src/sys/compat/netbsd32/netbsd32_netbsd.c Wed Feb 1 05:40:00 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: netbsd32_netbsd.c,v 1.177 2012/01/31 22:53:56 matt Exp $ */ +/* $NetBSD: netbsd32_netbsd.c,v 1.178 2012/02/01 05:40:00 dholland Exp $ */ /* * Copyright (c) 1998, 2001, 2008 Matthew R. Green @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: netbsd32_netbsd.c,v 1.177 2012/01/31 22:53:56 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: netbsd32_netbsd.c,v 1.178 2012/02/01 05:40:00 dholland Exp $"); #if defined(_KERNEL_OPT) #include "opt_ddb.h" @@ -68,6 +68,7 @@ __KERNEL_RCSID(0, "$NetBSD: netbsd32_net #include <sys/filedesc.h> #include <sys/namei.h> #include <sys/dirent.h> +#include <sys/quotactl.h> #include <sys/kauth.h> #include <sys/vfs_syscalls.h> @@ -1185,39 +1186,97 @@ netbsd32_rmdir(struct lwp *l, const stru } int -netbsd32___quotactl50(struct lwp *l, const struct netbsd32___quotactl50_args *uap, register_t *retval) +netbsd32___quotactl(struct lwp *l, const struct netbsd32___quotactl_args *uap, register_t *retval) { /* { syscallarg(const netbsd32_charp) path; - syscallarg(netbsd32_voidp) v; + syscallarg(netbsd32_voidp) args; } */ - struct plistref pref; + struct netbsd32_quotactlargs args32; + struct quotactl_args args; int error; - struct vnode *vp; - struct mount *mp; - prop_dictionary_t dict; - error = namei_simple_user(SCARG_P32(uap, path), - NSM_FOLLOW_TRYEMULROOT, &vp); + error = copyin(SCARG_P32(uap, args), &args32, sizeof(args32)); + if (error) { + return error; + } - if (error != 0) - return (error); - mp = vp->v_mount; + args.qc_op = args32.qc_op; + switch (args.qc_op) { + case QUOTACTL_STAT: + args.u.stat.qc_ret = NETBSD32PTR64(args32.u.stat.qc_ret); + break; + case QUOTACTL_IDTYPESTAT: + args.u.idtypestat.qc_idtype = args32.u.idtypestat.qc_idtype; + args.u.idtypestat.qc_info = + NETBSD32PTR64(args32.u.idtypestat.qc_info); + break; + case QUOTACTL_OBJTYPESTAT: + args.u.objtypestat.qc_objtype = + args32.u.objtypestat.qc_objtype; + args.u.objtypestat.qc_info = + NETBSD32PTR64(args32.u.objtypestat.qc_info); + break; + case QUOTACTL_GET: + args.u.get.qc_key = NETBSD32PTR64(args32.u.get.qc_key); + args.u.get.qc_ret = NETBSD32PTR64(args32.u.get.qc_ret); + break; + case QUOTACTL_PUT: + args.u.put.qc_key = NETBSD32PTR64(args32.u.put.qc_key); + args.u.put.qc_val = NETBSD32PTR64(args32.u.put.qc_val); + break; + case QUOTACTL_DELETE: + args.u.delete.qc_key = NETBSD32PTR64(args32.u.delete.qc_key); + break; + case QUOTACTL_CURSOROPEN: + args.u.cursoropen.qc_cursor = + NETBSD32PTR64(args32.u.cursoropen.qc_cursor); + break; + case QUOTACTL_CURSORCLOSE: + args.u.cursorclose.qc_cursor = + NETBSD32PTR64(args32.u.cursorclose.qc_cursor); + break; + case QUOTACTL_CURSORSKIPIDTYPE: + args.u.cursorskipidtype.qc_cursor = + NETBSD32PTR64(args32.u.cursorskipidtype.qc_cursor); + args.u.cursorskipidtype.qc_idtype = + args32.u.cursorskipidtype.qc_idtype; + break; + case QUOTACTL_CURSORGET: + args.u.cursorget.qc_cursor = + NETBSD32PTR64(args32.u.cursorget.qc_cursor); + args.u.cursorget.qc_keys = + NETBSD32PTR64(args32.u.cursorget.qc_keys); + args.u.cursorget.qc_vals = + NETBSD32PTR64(args32.u.cursorget.qc_vals); + args.u.cursorget.qc_maxnum = + args32.u.cursorget.qc_maxnum; + args.u.cursorget.qc_ret = + NETBSD32PTR64(args32.u.cursorget.qc_ret); + break; + case QUOTACTL_CURSORATEND: + args.u.cursoratend.qc_cursor = + NETBSD32PTR64(args32.u.cursoratend.qc_cursor); + args.u.cursoratend.qc_ret = + NETBSD32PTR64(args32.u.cursoratend.qc_ret); + break; + case QUOTACTL_CURSORREWIND: + args.u.cursorrewind.qc_cursor = + NETBSD32PTR64(args32.u.cursorrewind.qc_cursor); + break; + case QUOTACTL_QUOTAON: + args.u.quotaon.qc_idtype = args32.u.quotaon.qc_idtype; + args.u.quotaon.qc_quotafile = + NETBSD32PTR64(args32.u.quotaon.qc_quotafile); + break; + case QUOTACTL_QUOTAOFF: + args.u.quotaoff.qc_idtype = args32.u.quotaoff.qc_idtype; + break; + default: + return EINVAL; + } - error = netbsd32_copyin_plistref(SCARG(uap, pref), &pref); - if (error) - return error; - error = prop_dictionary_copyin(&pref, &dict); - if (error) - return error; - error = vfs_quotactl(mp, dict); - vrele(vp); - if (!error) - error = prop_dictionary_copyout(&pref, dict); - if (!error) - error = netbsd32_copyout_plistref(SCARG(uap, pref), &pref); - prop_object_release(dict); - return (error); + return do_sys_quotactl(SCARG_P32(uap, path), &args); } int Index: src/sys/compat/netbsd32/netbsd32_syscall.h diff -u src/sys/compat/netbsd32/netbsd32_syscall.h:1.97 src/sys/compat/netbsd32/netbsd32_syscall.h:1.98 --- src/sys/compat/netbsd32/netbsd32_syscall.h:1.97 Tue Jan 31 22:53:28 2012 +++ src/sys/compat/netbsd32/netbsd32_syscall.h Wed Feb 1 05:40:00 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: netbsd32_syscall.h,v 1.97 2012/01/31 22:53:28 matt Exp $ */ +/* $NetBSD: netbsd32_syscall.h,v 1.98 2012/02/01 05:40:00 dholland Exp $ */ /* * System call numbers. @@ -1196,9 +1196,7 @@ /* syscall: "netbsd32___fhstat50" ret: "int" args: "const netbsd32_voidp" "netbsd32_size_t" "netbsd32_statp_t" */ #define NETBSD32_SYS_netbsd32___fhstat50 451 -/* syscall: "netbsd32___quotactl50" ret: "int" args: "const netbsd32_charp" "netbsd32_voidp" */ -#define NETBSD32_SYS_netbsd32___quotactl50 452 - + /* 452 is obsolete 5.99 quotactl */ /* syscall: "netbsd32_pipe2" ret: "int" args: "netbsd32_intp" "int" */ #define NETBSD32_SYS_netbsd32_pipe2 453 Index: src/sys/compat/netbsd32/netbsd32_syscallargs.h diff -u src/sys/compat/netbsd32/netbsd32_syscallargs.h:1.97 src/sys/compat/netbsd32/netbsd32_syscallargs.h:1.98 --- src/sys/compat/netbsd32/netbsd32_syscallargs.h:1.97 Tue Jan 31 22:53:28 2012 +++ src/sys/compat/netbsd32/netbsd32_syscallargs.h Wed Feb 1 05:40:00 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: netbsd32_syscallargs.h,v 1.97 2012/01/31 22:53:28 matt Exp $ */ +/* $NetBSD: netbsd32_syscallargs.h,v 1.98 2012/02/01 05:40:00 dholland Exp $ */ /* * System call argument lists. @@ -2303,12 +2303,6 @@ struct netbsd32___fhstat50_args { }; check_syscall_args(netbsd32___fhstat50) -struct netbsd32___quotactl50_args { - syscallarg(const netbsd32_charp) path; - syscallarg(netbsd32_voidp) pref; -}; -check_syscall_args(netbsd32___quotactl50) - struct netbsd32_pipe2_args { syscallarg(netbsd32_intp) fildes; syscallarg(int) flags; @@ -3235,8 +3229,6 @@ int netbsd32___mknod50(struct lwp *, con int netbsd32___fhstat50(struct lwp *, const struct netbsd32___fhstat50_args *, register_t *); -int netbsd32___quotactl50(struct lwp *, const struct netbsd32___quotactl50_args *, register_t *); - int netbsd32_pipe2(struct lwp *, const struct netbsd32_pipe2_args *, register_t *); int netbsd32_dup3(struct lwp *, const struct netbsd32_dup3_args *, register_t *); Index: src/sys/compat/netbsd32/netbsd32_syscalls.c diff -u src/sys/compat/netbsd32/netbsd32_syscalls.c:1.96 src/sys/compat/netbsd32/netbsd32_syscalls.c:1.97 --- src/sys/compat/netbsd32/netbsd32_syscalls.c:1.96 Tue Jan 31 22:53:28 2012 +++ src/sys/compat/netbsd32/netbsd32_syscalls.c Wed Feb 1 05:40:00 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: netbsd32_syscalls.c,v 1.96 2012/01/31 22:53:28 matt Exp $ */ +/* $NetBSD: netbsd32_syscalls.c,v 1.97 2012/02/01 05:40:00 dholland Exp $ */ /* * System call names. @@ -8,7 +8,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: netbsd32_syscalls.c,v 1.96 2012/01/31 22:53:28 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: netbsd32_syscalls.c,v 1.97 2012/02/01 05:40:00 dholland Exp $"); #if defined(_KERNEL_OPT) #if defined(_KERNEL_OPT) @@ -563,7 +563,7 @@ const char *const netbsd32_syscallnames[ /* 449 */ "netbsd32___wait450", /* 450 */ "netbsd32___mknod50", /* 451 */ "netbsd32___fhstat50", - /* 452 */ "netbsd32___quotactl50", + /* 452 */ "#452 (obsolete 5.99 quotactl)", /* 453 */ "netbsd32_pipe2", /* 454 */ "netbsd32_dup3", /* 455 */ "netbsd32_kqueue1", Index: src/sys/compat/netbsd32/netbsd32_sysent.c diff -u src/sys/compat/netbsd32/netbsd32_sysent.c:1.96 src/sys/compat/netbsd32/netbsd32_sysent.c:1.97 --- src/sys/compat/netbsd32/netbsd32_sysent.c:1.96 Tue Jan 31 22:53:28 2012 +++ src/sys/compat/netbsd32/netbsd32_sysent.c Wed Feb 1 05:40:01 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: netbsd32_sysent.c,v 1.96 2012/01/31 22:53:28 matt Exp $ */ +/* $NetBSD: netbsd32_sysent.c,v 1.97 2012/02/01 05:40:01 dholland Exp $ */ /* * System call switch table. @@ -8,7 +8,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: netbsd32_sysent.c,v 1.96 2012/01/31 22:53:28 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: netbsd32_sysent.c,v 1.97 2012/02/01 05:40:01 dholland Exp $"); #if defined(_KERNEL_OPT) #include "opt_compat_netbsd.h" @@ -1130,8 +1130,8 @@ struct sysent netbsd32_sysent[] = { (sy_call_t *)netbsd32___mknod50 }, /* 450 = netbsd32___mknod50 */ { ns(struct netbsd32___fhstat50_args), 0, (sy_call_t *)netbsd32___fhstat50 }, /* 451 = netbsd32___fhstat50 */ - { ns(struct netbsd32___quotactl50_args), 0, - (sy_call_t *)netbsd32___quotactl50 },/* 452 = netbsd32___quotactl50 */ + { 0, 0, 0, + sys_nosys }, /* 452 = obsolete 5.99 quotactl */ { ns(struct netbsd32_pipe2_args), 0, (sy_call_t *)netbsd32_pipe2 }, /* 453 = netbsd32_pipe2 */ { ns(struct netbsd32_dup3_args), 0, Index: src/sys/compat/netbsd32/syscalls.master diff -u src/sys/compat/netbsd32/syscalls.master:1.90 src/sys/compat/netbsd32/syscalls.master:1.91 --- src/sys/compat/netbsd32/syscalls.master:1.90 Wed Feb 1 05:34:40 2012 +++ src/sys/compat/netbsd32/syscalls.master Wed Feb 1 05:40:01 2012 @@ -1,4 +1,4 @@ - $NetBSD: syscalls.master,v 1.90 2012/02/01 05:34:40 dholland Exp $ + $NetBSD: syscalls.master,v 1.91 2012/02/01 05:40:01 dholland Exp $ ; from: NetBSD: syscalls.master,v 1.81 1998/07/05 08:49:50 jonathan Exp ; @(#)syscalls.master 8.2 (Berkeley) 1/13/94 @@ -1037,6 +1037,5 @@ int flag); } 472 STD { int|netbsd32||futimens(int fd, \ const netbsd32_timespecp_t tptr); } -; XXX notyet -;473 STD { int|sys||__quotactl(const netbsd32_charp path, \ -; netbsd32_quotactlargsp_t args); } +473 STD { int|netbsd32||__quotactl(const netbsd32_charp path, \ + netbsd32_voidp args); }