Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/compat/netbsd32 Handle the KFILTER_BYFILTER and KFILTER_...



details:   https://anonhg.NetBSD.org/src/rev/5b4b06beac51
branches:  trunk
changeset: 979842:5b4b06beac51
user:      simonb <simonb%NetBSD.org@localhost>
date:      Thu Jan 14 08:22:51 2021 +0000

description:
Handle the KFILTER_BYFILTER and KFILTER_BYNAME ioctls for compat32.
Passes "atf kernel/kqueue/t_ioctl".

diffstat:

 sys/compat/netbsd32/netbsd32_ioctl.c |  29 +++++++++++++++++++++++++++--
 sys/compat/netbsd32/netbsd32_ioctl.h |  15 ++++++++++++++-
 2 files changed, 41 insertions(+), 3 deletions(-)

diffs (93 lines):

diff -r 10f32805c50a -r 5b4b06beac51 sys/compat/netbsd32/netbsd32_ioctl.c
--- a/sys/compat/netbsd32/netbsd32_ioctl.c      Thu Jan 14 08:00:45 2021 +0000
+++ b/sys/compat/netbsd32/netbsd32_ioctl.c      Thu Jan 14 08:22:51 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: netbsd32_ioctl.c,v 1.115 2021/01/14 08:00:45 simonb Exp $      */
+/*     $NetBSD: netbsd32_ioctl.c,v 1.116 2021/01/14 08:22:51 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.115 2021/01/14 08:00:45 simonb Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_ioctl.c,v 1.116 2021/01/14 08:22:51 simonb Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_ntp.h"
@@ -244,6 +244,16 @@
 }
 
 static inline void
+netbsd32_to_kfilter_mapping(struct netbsd32_kfilter_mapping *s32p,
+    struct kfilter_mapping *p, u_long cmd)
+{
+
+       p->name = (char *)NETBSD32PTR64(s32p->name);
+       p->len = s32p->len;
+       p->filter = s32p->filter;
+}
+
+static inline void
 netbsd32_to_atareq(struct netbsd32_atareq *s32p, struct atareq *p, u_long cmd)
 {
 
@@ -755,6 +765,16 @@
 }
 
 static inline void
+netbsd32_from_kfilter_mapping(struct kfilter_mapping *p,
+    struct netbsd32_kfilter_mapping *s32p, u_long cmd)
+{
+
+       NETBSD32PTR32(s32p->name, p->name);
+       s32p->len = p->len;
+       s32p->filter = p->filter;
+}
+
+static inline void
 netbsd32_from_atareq(struct atareq *p,
     struct netbsd32_atareq *s32p, u_long cmd)
 {
@@ -1369,6 +1389,11 @@
                IOCTL_STRUCT_CONV_TO(DIOCWFORMAT, format_op);
 #endif
 
+       case KFILTER_BYFILTER32:
+               IOCTL_STRUCT_CONV_TO(KFILTER_BYFILTER, kfilter_mapping);
+       case KFILTER_BYNAME32:
+               IOCTL_STRUCT_CONV_TO(KFILTER_BYNAME, kfilter_mapping);
+
        case ATAIOCCOMMAND32:
                IOCTL_STRUCT_CONV_TO(ATAIOCCOMMAND, atareq);
 
diff -r 10f32805c50a -r 5b4b06beac51 sys/compat/netbsd32/netbsd32_ioctl.h
--- a/sys/compat/netbsd32/netbsd32_ioctl.h      Thu Jan 14 08:00:45 2021 +0000
+++ b/sys/compat/netbsd32/netbsd32_ioctl.h      Thu Jan 14 08:22:51 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: netbsd32_ioctl.h,v 1.75 2021/01/14 08:00:45 simonb Exp $       */
+/*     $NetBSD: netbsd32_ioctl.h,v 1.76 2021/01/14 08:22:51 simonb Exp $       */
 
 /*
  * Copyright (c) 1998, 2001 Matthew R. Green
@@ -89,6 +89,19 @@
 #define DIOCWFORMAT32  _IOWR('d', 106, struct netbsd32_format_op)
 #endif
 
+/* from <sys/event.h> */
+
+struct netbsd32_kfilter_mapping {
+       netbsd32_charp  name;           /* name to lookup or return */
+       netbsd32_size_t len;            /* length of name */
+       uint32_t        filter;         /* filter to lookup or return */
+};
+
+/* map filter to name (max size len) */
+#define KFILTER_BYFILTER32     _IOWR('k', 0, struct netbsd32_kfilter_mapping)
+/* map name to filter (len ignored) */
+#define KFILTER_BYNAME32       _IOWR('k', 1, struct netbsd32_kfilter_mapping)
+
 /* from <sys/ataio.h> */
 struct netbsd32_atareq {
        netbsd32_u_long         flags;



Home | Main Index | Thread Index | Old Index