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); }

Reply via email to