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