Module Name: src
Committed By: simonb
Date: Thu Jan 14 08:22:51 UTC 2021
Modified Files:
src/sys/compat/netbsd32: netbsd32_ioctl.c netbsd32_ioctl.h
Log Message:
Handle the KFILTER_BYFILTER and KFILTER_BYNAME ioctls for compat32.
Passes "atf kernel/kqueue/t_ioctl".
To generate a diff of this commit:
cvs rdiff -u -r1.115 -r1.116 src/sys/compat/netbsd32/netbsd32_ioctl.c
cvs rdiff -u -r1.75 -r1.76 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_ioctl.c
diff -u src/sys/compat/netbsd32/netbsd32_ioctl.c:1.115 src/sys/compat/netbsd32/netbsd32_ioctl.c:1.116
--- src/sys/compat/netbsd32/netbsd32_ioctl.c:1.115 Thu Jan 14 08:00:45 2021
+++ src/sys/compat/netbsd32/netbsd32_ioctl.c Thu Jan 14 08:22:51 2021
@@ -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 @@ netbsd32_to_sioc_sg_req(struct netbsd32_
}
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 @@ netbsd32_from_sioc_sg_req(struct sioc_sg
}
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 @@ netbsd32_ioctl(struct lwp *l,
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);
Index: src/sys/compat/netbsd32/netbsd32_ioctl.h
diff -u src/sys/compat/netbsd32/netbsd32_ioctl.h:1.75 src/sys/compat/netbsd32/netbsd32_ioctl.h:1.76
--- src/sys/compat/netbsd32/netbsd32_ioctl.h:1.75 Thu Jan 14 08:00:45 2021
+++ src/sys/compat/netbsd32/netbsd32_ioctl.h Thu Jan 14 08:22:51 2021
@@ -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 @@ struct netbsd32_format_op {
#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;