Module Name: src Committed By: simonb Date: Thu Jan 14 08:00:45 UTC 2021
Modified Files: src/sys/compat/netbsd32: netbsd32.h netbsd32_ioctl.c netbsd32_ioctl.h Log Message: Handle FSSIOCSET and FSSIOCGET; vndconfig(8) works with compat32 now. XXX: FSSIOCSET50 and FSSIOCGET50 are not (yet) handled. To generate a diff of this commit: cvs rdiff -u -r1.134 -r1.135 src/sys/compat/netbsd32/netbsd32.h cvs rdiff -u -r1.114 -r1.115 src/sys/compat/netbsd32/netbsd32_ioctl.c cvs rdiff -u -r1.74 -r1.75 src/sys/compat/netbsd32/netbsd32_ioctl.h 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.134 src/sys/compat/netbsd32/netbsd32.h:1.135 --- src/sys/compat/netbsd32/netbsd32.h:1.134 Sun Nov 1 18:51:02 2020 +++ src/sys/compat/netbsd32/netbsd32.h Thu Jan 14 08:00:45 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: netbsd32.h,v 1.134 2020/11/01 18:51:02 pgoyette Exp $ */ +/* $NetBSD: netbsd32.h,v 1.135 2021/01/14 08:00:45 simonb Exp $ */ /* * Copyright (c) 1998, 2001, 2008, 2015 Matthew R. Green @@ -203,6 +203,7 @@ typedef netbsd32_pointer_t netbsd32_semi typedef netbsd32_uint64 netbsd32_dev_t; typedef netbsd32_int64 netbsd32_off_t; typedef netbsd32_uint64 netbsd32_ino_t; +typedef netbsd32_int64 netbsd32_blkcnt_t; /* from <sys/spawn.h> */ typedef netbsd32_pointer_t netbsd32_posix_spawn_file_actionsp; Index: src/sys/compat/netbsd32/netbsd32_ioctl.c diff -u src/sys/compat/netbsd32/netbsd32_ioctl.c:1.114 src/sys/compat/netbsd32/netbsd32_ioctl.c:1.115 --- src/sys/compat/netbsd32/netbsd32_ioctl.c:1.114 Tue Jul 21 05:33:51 2020 +++ src/sys/compat/netbsd32/netbsd32_ioctl.c Thu Jan 14 08:00:45 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: netbsd32_ioctl.c,v 1.114 2020/07/21 05:33:51 simonb Exp $ */ +/* $NetBSD: netbsd32_ioctl.c,v 1.115 2021/01/14 08:00:45 simonb Exp $ */ /* * Copyright (c) 1998, 2001 Matthew R. Green @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: netbsd32_ioctl.c,v 1.114 2020/07/21 05:33:51 simonb Exp $"); +__KERNEL_RCSID(0, "$NetBSD: netbsd32_ioctl.c,v 1.115 2021/01/14 08:00:45 simonb Exp $"); #if defined(_KERNEL_OPT) #include "opt_ntp.h" @@ -93,6 +93,7 @@ __KERNEL_RCSID(0, "$NetBSD: netbsd32_ioc #include <compat/netbsd32/netbsd32_syscallargs.h> #include <compat/netbsd32/netbsd32_conv.h> +#include <dev/fssvar.h> #include <dev/vndvar.h> /* convert to/from different structures */ @@ -261,6 +262,30 @@ netbsd32_to_atareq(struct netbsd32_atare } static inline void +netbsd32_to_fss_set(struct netbsd32_fss_set *s32p, struct fss_set *p, + u_long cmd) +{ + + p->fss_mount = (char *)NETBSD32PTR64(s32p->fss_mount); + p->fss_bstore = (char *)NETBSD32PTR64(s32p->fss_bstore); + p->fss_csize = s32p->fss_csize; + p->fss_flags = s32p->fss_flags; +} + +static inline void +netbsd32_to_fss_get(struct netbsd32_fss_get *s32p, struct fss_get *p, + u_long cmd) +{ + + memcpy(p->fsg_mount, s32p->fsg_mount, MNAMELEN); + netbsd32_to_timeval(&s32p->fsg_time, &p->fsg_time); + p->fsg_csize = s32p->fsg_csize; + p->fsg_mount_size = s32p->fsg_mount_size; + p->fsg_bs_size = s32p->fsg_bs_size; + +} + +static inline void netbsd32_to_vnd_ioctl(struct netbsd32_vnd_ioctl *s32p, struct vnd_ioctl *p, u_long cmd) { @@ -749,6 +774,30 @@ netbsd32_from_atareq(struct atareq *p, } static inline void +netbsd32_from_fss_set(struct fss_set *p, struct netbsd32_fss_set *s32p, + u_long cmd) +{ + + NETBSD32PTR32(s32p->fss_mount, p->fss_mount); + NETBSD32PTR32(s32p->fss_bstore, p->fss_bstore); + s32p->fss_csize = p->fss_csize; + s32p->fss_flags = p->fss_flags; +} + +static inline void +netbsd32_from_fss_get(struct fss_get *p, struct netbsd32_fss_get *s32p, + u_long cmd) +{ + + memcpy(s32p->fsg_mount, p->fsg_mount, MNAMELEN); + netbsd32_from_timeval(&p->fsg_time, &s32p->fsg_time); + s32p->fsg_csize = p->fsg_csize; + s32p->fsg_mount_size = p->fsg_mount_size; + s32p->fsg_bs_size = p->fsg_bs_size; + +} + +static inline void netbsd32_from_vnd_ioctl(struct vnd_ioctl *p, struct netbsd32_vnd_ioctl *s32p, u_long cmd) { @@ -1446,6 +1495,12 @@ netbsd32_ioctl(struct lwp *l, case SIOCGETSGCNT32: IOCTL_STRUCT_CONV_TO(SIOCGETSGCNT, sioc_sg_req); + case FSSIOCSET32: /* XXX FSSIOCSET50 not yet handled */ + IOCTL_STRUCT_CONV_TO(FSSIOCSET, fss_set); + + case FSSIOCGET32: /* XXX FSSIOCGET50 not yet handled */ + IOCTL_STRUCT_CONV_TO(FSSIOCGET, fss_get); + case VNDIOCSET32: IOCTL_STRUCT_CONV_TO(VNDIOCSET, vnd_ioctl); Index: src/sys/compat/netbsd32/netbsd32_ioctl.h diff -u src/sys/compat/netbsd32/netbsd32_ioctl.h:1.74 src/sys/compat/netbsd32/netbsd32_ioctl.h:1.75 --- src/sys/compat/netbsd32/netbsd32_ioctl.h:1.74 Thu Jan 14 02:43:04 2021 +++ src/sys/compat/netbsd32/netbsd32_ioctl.h Thu Jan 14 08:00:45 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: netbsd32_ioctl.h,v 1.74 2021/01/14 02:43:04 simonb Exp $ */ +/* $NetBSD: netbsd32_ioctl.h,v 1.75 2021/01/14 08:00:45 simonb Exp $ */ /* * Copyright (c) 1998, 2001 Matthew R. Green @@ -477,6 +477,26 @@ struct netbsd32_sioc_sg_req { /* from <sys/sockio.h> */ #define SIOCGETSGCNT32 _IOWR('u', 52, struct netbsd32_sioc_sg_req) /* sg pkt cnt */ +/* from <dev/ffsvar.h> */ +struct netbsd32_fss_set { + netbsd32_charp fss_mount; /* Mount point of file system */ + netbsd32_charp fss_bstore; /* Path of backing store */ + blksize_t fss_csize; /* Preferred cluster size */ + int fss_flags; /* Initial flags */ +}; + +struct netbsd32_fss_get { + char fsg_mount[MNAMELEN]; /* Mount point of file system */ + struct netbsd32_timeval fsg_time; /* Time this snapshot was taken */ + blksize_t fsg_csize; /* Current cluster size */ + netbsd32_blkcnt_t fsg_mount_size; /* # clusters on file system */ + netbsd32_blkcnt_t fsg_bs_size; /* # clusters on backing store */ +}; + +/* XXX: FSSIOCSET50 and FSSIOCGET50 are not (yet) handled */ +#define FSSIOCSET32 _IOW('F', 5, struct netbsd32_fss_set) /* Configure */ +#define FSSIOCGET32 _IOR('F', 1, struct netbsd32_fss_get) /* Status */ + struct netbsd32_vnd_ioctl { netbsd32_charp vnd_file; /* pathname of file to mount */ int vnd_flags; /* flags; see below */