Module Name:    src
Committed By:   rin
Date:           Sat Jul 29 12:38:25 UTC 2023

Modified Files:
        src/sys/compat/netbsd32: netbsd32.h netbsd32_compat_100.c
            netbsd32_compat_50.c netbsd32_conv.h netbsd32_event.c
            syscalls.master
Added Files:
        src/sys/compat/netbsd32: netbsd32_event.h

Log Message:
COMPAT_NETBSD32: Catch up with sys___kevent100() addition.

XXX
Add epoll_* and memfd_create.


To generate a diff of this commit:
cvs rdiff -u -r1.141 -r1.142 src/sys/compat/netbsd32/netbsd32.h \
    src/sys/compat/netbsd32/syscalls.master
cvs rdiff -u -r1.1 -r1.2 src/sys/compat/netbsd32/netbsd32_compat_100.c
cvs rdiff -u -r1.53 -r1.54 src/sys/compat/netbsd32/netbsd32_compat_50.c
cvs rdiff -u -r1.46 -r1.47 src/sys/compat/netbsd32/netbsd32_conv.h
cvs rdiff -u -r1.12 -r1.13 src/sys/compat/netbsd32/netbsd32_event.c
cvs rdiff -u -r0 -r1.1 src/sys/compat/netbsd32/netbsd32_event.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.141 src/sys/compat/netbsd32/netbsd32.h:1.142
--- src/sys/compat/netbsd32/netbsd32.h:1.141	Sun Feb 12 16:28:32 2023
+++ src/sys/compat/netbsd32/netbsd32.h	Sat Jul 29 12:38:25 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32.h,v 1.141 2023/02/12 16:28:32 andvar Exp $	*/
+/*	$NetBSD: netbsd32.h,v 1.142 2023/07/29 12:38:25 rin Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001, 2008, 2015 Matthew R. Green
@@ -1024,6 +1024,19 @@ struct netbsd32_kevent {
 	uint32_t		fflags;
 	netbsd32_int64		data;
 	netbsd32_pointer_t	udata;
+	netbsd32_uint64		ext[4];
+};
+
+/* from <compat/sys/event.h> */
+typedef netbsd32_pointer_t netbsd32_kevent100p_t;
+
+struct netbsd32_kevent100 {
+	netbsd32_uintptr_t	ident;
+	uint32_t		filter;
+	uint32_t		flags;
+	uint32_t		fflags;
+	netbsd32_int64		data;
+	netbsd32_pointer_t	udata;
 };
 
 /* from <sys/sched.h> */
Index: src/sys/compat/netbsd32/syscalls.master
diff -u src/sys/compat/netbsd32/syscalls.master:1.141 src/sys/compat/netbsd32/syscalls.master:1.142
--- src/sys/compat/netbsd32/syscalls.master:1.141	Mon Sep 20 01:07:45 2021
+++ src/sys/compat/netbsd32/syscalls.master	Sat Jul 29 12:38:25 2023
@@ -1,4 +1,4 @@
-	$NetBSD: syscalls.master,v 1.141 2021/09/20 01:07:45 thorpej Exp $
+	$NetBSD: syscalls.master,v 1.142 2023/07/29 12:38:25 rin Exp $
 
 ;	from: NetBSD: syscalls.master,v 1.81 1998/07/05 08:49:50 jonathan Exp
 ;	@(#)syscalls.master	8.2 (Berkeley) 1/13/94
@@ -783,9 +783,9 @@
 344	NOARGS		{ int|sys||kqueue(void); }
 345	COMPAT_50 MODULAR compat_netbsd32_50	\
 			{ int|netbsd32||kevent(int fd, \
-			    netbsd32_keventp_t changelist, \
+			    netbsd32_kevent100p_t changelist, \
 			    netbsd32_size_t nchanges, \
-			    netbsd32_keventp_t eventlist, \
+			    netbsd32_kevent100p_t eventlist, \
 			    netbsd32_size_t nevents, \
 			    netbsd32_timespec50p_t timeout); }
 ; Scheduling system calls.
@@ -1016,10 +1016,11 @@
 			    const netbsd32_timespecp_t ts, \
 			    lwpid_t unpark, const netbsd32_voidp hint, \
 			    const netbsd32_voidp unparkhint); }
-435	STD 		{ int|netbsd32|50|kevent(int fd, \
-			    const netbsd32_keventp_t changelist, \
+435	COMPAT_100 MODULAR compat_netbsd32_100	\
+			{ int|netbsd32|50|kevent(int fd, \
+			    const netbsd32_kevent100p_t changelist, \
 			    netbsd32_size_t nchanges, \
-			    netbsd32_keventp_t eventlist, \
+			    netbsd32_kevent100p_t eventlist, \
 			    netbsd32_size_t nevents, \
 			    const netbsd32_timespecp_t timeout); }
 436	STD 		{ int|netbsd32|50|pselect(int nd, \
@@ -1213,3 +1214,13 @@
 			    acl_type_t type, netbsd32_aclp_t aclp); }
 499	STD		{ long|netbsd32||lpathconf(const netbsd32_charp path, \
 			    int name); }
+500	UNIMPL		memfd_create
+501	STD		{ int|netbsd32|100|kevent(int fd, \
+			    const netbsd32_keventp_t changelist, \
+			    netbsd32_size_t nchanges, \
+			    netbsd32_keventp_t eventlist, \
+			    netbsd32_size_t nevents, \
+			    const netbsd32_timespecp_t timeout); }
+502	UNIMPL		epoll_create1
+503	UNIMPL		epoll_ctl
+504	UNIMPL		epoll_pwait2

Index: src/sys/compat/netbsd32/netbsd32_compat_100.c
diff -u src/sys/compat/netbsd32/netbsd32_compat_100.c:1.1 src/sys/compat/netbsd32/netbsd32_compat_100.c:1.2
--- src/sys/compat/netbsd32/netbsd32_compat_100.c:1.1	Mon Dec 19 23:19:51 2022
+++ src/sys/compat/netbsd32/netbsd32_compat_100.c	Sat Jul 29 12:38:25 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_compat_100.c,v 1.1 2022/12/19 23:19:51 pgoyette Exp $ */
+/*	$NetBSD: netbsd32_compat_100.c,v 1.2 2023/07/29 12:38:25 rin Exp $ */
 
 /*-
  * Copyright (c) 2019 The NetBSD Foundation, Inc.
@@ -30,14 +30,126 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_100.c,v 1.1 2022/12/19 23:19:51 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_100.c,v 1.2 2023/07/29 12:38:25 rin Exp $");
 
+#include <sys/types.h>
+#include <sys/event.h>
+#include <sys/eventvar.h>
 #include <sys/module.h>
+#include <sys/syscallvar.h>
+#include <sys/syscallargs.h>
+#include <sys/systm.h>
 
 #include <compat/netbsd32/netbsd32.h>
 #include <compat/netbsd32/netbsd32_syscall.h>
 #include <compat/netbsd32/netbsd32_syscallargs.h>
 #include <compat/netbsd32/netbsd32_conv.h>
+#include <compat/netbsd32/netbsd32_event.h>
+
+static int
+compat_100_netbsd32_kevent_fetch_timeout(const void *src, void *dest,
+    size_t length)
+{
+	struct netbsd32_timespec ts32;
+	int error;
+
+	KASSERT(length == sizeof(struct timespec));
+
+	error = copyin(src, &ts32, sizeof(ts32));
+	if (error)
+		return error;
+	netbsd32_to_timespec(&ts32, (struct timespec *)dest);
+	return 0;
+}
+
+static void
+compat_100_netbsd32_to_kevent(const struct netbsd32_kevent100 *ke32,
+    struct kevent *ke)
+{
+
+	memset(ke, 0, sizeof(*ke));
+	ke->ident = ke32->ident;
+	ke->filter = ke32->filter;
+	ke->flags = ke32->flags;
+	ke->fflags = ke32->fflags;
+	ke->data = ke32->data;
+	ke->udata = NETBSD32PTR64(ke32->udata);
+}
+
+static void
+compat_100_netbsd32_from_kevent(const struct kevent *ke,
+    struct netbsd32_kevent100 *ke32)
+{
+
+	memset(ke32, 0, sizeof(*ke32));
+	ke32->ident = ke->ident;
+	ke32->filter = ke->filter;
+	ke32->flags = ke->flags;
+	ke32->fflags = ke->fflags;
+	ke32->data = ke->data;
+	NETBSD32PTR32(ke32->udata, ke->udata);
+}
+
+int
+compat_100_netbsd32_kevent_fetch_changes(void *ctx,
+    const struct kevent *changelist, struct kevent *changes, size_t index,
+    int n)
+{
+	const struct netbsd32_kevent100 *src =
+	    (const struct netbsd32_kevent100 *)changelist;
+	struct netbsd32_kevent100 *ke32, *changes32 = ctx;
+	int error, i;
+
+	error = copyin(src + index, changes32, n * sizeof(*changes32));
+	if (error)
+		return error;
+	for (i = 0, ke32 = changes32; i < n; i++, ke32++, changes++)
+		compat_100_netbsd32_to_kevent(ke32, changes);
+	return 0;
+}
+
+int
+compat_100_netbsd32_kevent_put_events(void *ctx, struct kevent *events,
+    struct kevent *eventlist, size_t index, int n)
+{
+	struct netbsd32_kevent100 *ke32, *events32 = ctx;
+	int i;
+
+	for (i = 0, ke32 = events32; i < n; i++, ke32++, events++)
+		compat_100_netbsd32_from_kevent(events, ke32);
+	ke32 = ((struct netbsd32_kevent100 *)eventlist) + index;
+	return copyout(events32, ke32, n * sizeof(*events32));
+}
+
+int
+compat_100_netbsd32___kevent50(struct lwp *l,
+    const struct compat_100_netbsd32___kevent50_args *uap, register_t *retval)
+{
+	/* {
+		syscallarg(int) fd;
+		syscallarg(const netbsd32_kevent100p_t) changelist;
+		syscallarg(netbsd32_size_t) nchanges;
+		syscallarg(netbsd32_kevent100p_t) eventlist;
+		syscallarg(netbsd32_size_t) nevents;
+		syscallarg(netbsd32_timespecp_t) timeout;
+	} */
+	struct kevent_ops netbsd32_kevent_ops = {
+		.keo_fetch_timeout = compat_100_netbsd32_kevent_fetch_timeout,
+		.keo_fetch_changes = compat_100_netbsd32_kevent_fetch_changes,
+		.keo_put_events = compat_100_netbsd32_kevent_put_events,
+	};
+
+	return netbsd32_kevent1(retval, SCARG(uap, fd),
+	    (netbsd32_keventp_t)SCARG(uap, changelist), SCARG(uap, nchanges),
+	    (netbsd32_keventp_t)SCARG(uap, eventlist), SCARG(uap, nevents),
+	    SCARG(uap, timeout), &netbsd32_kevent_ops);
+}
+
+static struct syscall_package compat_netbsd32_100_syscalls[] = {
+	{ NETBSD32_SYS_compat_100_netbsd32___kevent50, 0,
+	    (sy_call_t *)compat_100_netbsd32___kevent50 },
+	{ 0, 0, NULL },
+};
 
 MODULE(MODULE_CLASS_EXEC, compat_netbsd32_100, "compat_netbsd32,compat_100");
 
@@ -47,10 +159,12 @@ compat_netbsd32_100_modcmd(modcmd_t cmd,
 
 	switch (cmd) {
 	case MODULE_CMD_INIT:
-		return 0;
+		return syscall_establish(&emul_netbsd32,
+		    compat_netbsd32_100_syscalls);
 
 	case MODULE_CMD_FINI:
-		return 0;
+		return syscall_disestablish(&emul_netbsd32,
+		    compat_netbsd32_100_syscalls);
 
 	default:
 		return ENOTTY;

Index: src/sys/compat/netbsd32/netbsd32_compat_50.c
diff -u src/sys/compat/netbsd32/netbsd32_compat_50.c:1.53 src/sys/compat/netbsd32/netbsd32_compat_50.c:1.54
--- src/sys/compat/netbsd32/netbsd32_compat_50.c:1.53	Wed Oct 26 23:23:52 2022
+++ src/sys/compat/netbsd32/netbsd32_compat_50.c	Sat Jul 29 12:38:25 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_compat_50.c,v 1.53 2022/10/26 23:23:52 riastradh Exp $	*/
+/*	$NetBSD: netbsd32_compat_50.c,v 1.54 2023/07/29 12:38:25 rin Exp $	*/
 
 /*-
  * Copyright (c) 2008, 2020 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_50.c,v 1.53 2022/10/26 23:23:52 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_50.c,v 1.54 2023/07/29 12:38:25 rin Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
@@ -71,6 +71,7 @@ __KERNEL_RCSID(0, "$NetBSD: netbsd32_com
 #include <compat/netbsd32/netbsd32_syscall.h>
 #include <compat/netbsd32/netbsd32_syscallargs.h>
 #include <compat/netbsd32/netbsd32_conv.h>
+#include <compat/netbsd32/netbsd32_event.h>
 #include <compat/sys/mount.h>
 #include <compat/sys/time.h>
 #include <compat/sys/rnd.h>
@@ -577,7 +578,8 @@ compat_50_netbsd32__lwp_park(struct lwp 
 }
 
 static int
-netbsd32_kevent_fetch_timeout(const void *src, void *dest, size_t length)
+compat_50_netbsd32_kevent_fetch_timeout(const void *src, void *dest,
+    size_t length)
 {
 	struct netbsd32_timespec50 ts32;
 	int error;
@@ -591,71 +593,28 @@ netbsd32_kevent_fetch_timeout(const void
 	return 0;
 }
 
-static int
-netbsd32_kevent_fetch_changes(void *ctx, const struct kevent *changelist,
-    struct kevent *changes, size_t index, int n)
-{
-	const struct netbsd32_kevent *src =
-	    (const struct netbsd32_kevent *)changelist;
-	struct netbsd32_kevent *kev32, *changes32 = ctx;
-	int error, i;
-
-	error = copyin(src + index, changes32, n * sizeof(*changes32));
-	if (error)
-		return error;
-	for (i = 0, kev32 = changes32; i < n; i++, kev32++, changes++)
-		netbsd32_to_kevent(kev32, changes);
-	return 0;
-}
-
-static int
-netbsd32_kevent_put_events(void *ctx, struct kevent *events,
-    struct kevent *eventlist, size_t index, int n)
-{
-	struct netbsd32_kevent *kev32, *events32 = ctx;
-	int i;
-
-	for (i = 0, kev32 = events32; i < n; i++, kev32++, events++)
-		netbsd32_from_kevent(events, kev32);
-	kev32 = (struct netbsd32_kevent *)eventlist;
-	return  copyout(events32, kev32, n * sizeof(*events32));
-}
-
 int
 compat_50_netbsd32_kevent(struct lwp *l,
     const struct compat_50_netbsd32_kevent_args *uap, register_t *retval)
 {
 	/* {
 		syscallarg(int) fd;
-		syscallarg(netbsd32_keventp_t) changelist;
+		syscallarg(netbsd32_kevent100p_t) changelist;
 		syscallarg(netbsd32_size_t) nchanges;
-		syscallarg(netbsd32_keventp_t) eventlist;
+		syscallarg(netbsd32_kevent100p_t) eventlist;
 		syscallarg(netbsd32_size_t) nevents;
 		syscallarg(netbsd32_timespec50p_t) timeout;
 	} */
-	int error;
-	size_t maxalloc, nchanges, nevents;
-	struct kevent_ops netbsd32_kevent_ops = {
-		.keo_fetch_timeout = netbsd32_kevent_fetch_timeout,
-		.keo_fetch_changes = netbsd32_kevent_fetch_changes,
-		.keo_put_events = netbsd32_kevent_put_events,
+	struct kevent_ops kops = {
+		.keo_fetch_timeout = compat_50_netbsd32_kevent_fetch_timeout,
+		.keo_fetch_changes = compat_100_netbsd32_kevent_fetch_changes,
+		.keo_put_events = compat_100_netbsd32_kevent_put_events,
 	};
 
-	nchanges = SCARG(uap, nchanges);
-	nevents = SCARG(uap, nevents);
-	maxalloc = KQ_NEVENTS;
-
-	netbsd32_kevent_ops.keo_private =
-	    kmem_alloc(maxalloc * sizeof(struct netbsd32_kevent), KM_SLEEP);
-
-	error = kevent1(retval, SCARG(uap, fd),
-	    NETBSD32PTR64(SCARG(uap, changelist)), nchanges,
-	    NETBSD32PTR64(SCARG(uap, eventlist)), nevents,
-	    NETBSD32PTR64(SCARG(uap, timeout)), &netbsd32_kevent_ops);
-
-	kmem_free(netbsd32_kevent_ops.keo_private,
-	    maxalloc * sizeof(struct netbsd32_kevent));
-	return error;
+	return netbsd32_kevent1(retval, SCARG(uap, fd),
+	    (netbsd32_keventp_t)SCARG(uap, changelist), SCARG(uap, nchanges),
+	    (netbsd32_keventp_t)SCARG(uap, eventlist), SCARG(uap, nevents),
+	    (netbsd32_timespecp_t)SCARG(uap, timeout), &kops);
 }
 
 int

Index: src/sys/compat/netbsd32/netbsd32_conv.h
diff -u src/sys/compat/netbsd32/netbsd32_conv.h:1.46 src/sys/compat/netbsd32/netbsd32_conv.h:1.47
--- src/sys/compat/netbsd32/netbsd32_conv.h:1.46	Tue Sep  7 11:43:05 2021
+++ src/sys/compat/netbsd32/netbsd32_conv.h	Sat Jul 29 12:38:25 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_conv.h,v 1.46 2021/09/07 11:43:05 riastradh Exp $	*/
+/*	$NetBSD: netbsd32_conv.h,v 1.47 2023/07/29 12:38:25 rin Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001 Matthew R. Green
@@ -812,6 +812,7 @@ netbsd32_to_kevent(struct netbsd32_keven
 	ke->fflags = ke32->fflags;
 	ke->data = ke32->data;
 	ke->udata = NETBSD32PTR64(ke32->udata);
+	memcpy(&ke->ext, &ke32->ext, sizeof(ke->ext));
 }
 
 static __inline void
@@ -825,6 +826,7 @@ netbsd32_from_kevent(struct kevent *ke, 
 	ke32->fflags = ke->fflags;
 	ke32->data = ke->data;
 	NETBSD32PTR32(ke32->udata, ke->udata);
+	memcpy(&ke32->ext, &ke->ext, sizeof(ke32->ext));
 }
 
 static __inline void

Index: src/sys/compat/netbsd32/netbsd32_event.c
diff -u src/sys/compat/netbsd32/netbsd32_event.c:1.12 src/sys/compat/netbsd32/netbsd32_event.c:1.13
--- src/sys/compat/netbsd32/netbsd32_event.c:1.12	Fri Sep  5 05:26:26 2014
+++ src/sys/compat/netbsd32/netbsd32_event.c	Sat Jul 29 12:38:25 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_event.c,v 1.12 2014/09/05 05:26:26 matt Exp $	*/
+/*	$NetBSD: netbsd32_event.c,v 1.13 2023/07/29 12:38:25 rin Exp $	*/
 
 /*
  *  Copyright (c) 2005 The NetBSD Foundation.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_event.c,v 1.12 2014/09/05 05:26:26 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_event.c,v 1.13 2023/07/29 12:38:25 rin Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -44,6 +44,7 @@ __KERNEL_RCSID(0, "$NetBSD: netbsd32_eve
 #include <compat/netbsd32/netbsd32_syscall.h>
 #include <compat/netbsd32/netbsd32_syscallargs.h>
 #include <compat/netbsd32/netbsd32_conv.h>
+#include <compat/netbsd32/netbsd32_event.h>
 
 static int
 netbsd32_kevent_fetch_timeout(const void *src, void *dest, size_t length)
@@ -91,38 +92,44 @@ netbsd32_kevent_put_events(void *ctx, st
 }
 
 int
-netbsd32___kevent50(struct lwp *l,
-    const struct netbsd32___kevent50_args *uap, register_t *retval)
+netbsd32_kevent1(register_t *retval, int fd,
+    const netbsd32_keventp_t changelist, netbsd32_size_t nchanges,
+    netbsd32_keventp_t eventlist, netbsd32_size_t nevents,
+    netbsd32_timespecp_t timeout, struct kevent_ops *kops)
+{
+	const size_t maxalloc = KQ_NEVENTS;
+	int error;
+
+	kops->keo_private =
+	    kmem_alloc(maxalloc * sizeof(struct netbsd32_kevent), KM_SLEEP);
+
+	error = kevent1(retval, fd, NETBSD32PTR64(changelist), nchanges,
+	    NETBSD32PTR64(eventlist), nevents, NETBSD32PTR64(timeout), kops);
+
+	kmem_free(kops->keo_private, maxalloc * sizeof(struct netbsd32_kevent));
+	return error;
+}
+
+int
+netbsd32___kevent100(struct lwp *l,
+    const struct netbsd32___kevent100_args *uap, register_t *retval)
 {
 	/* {
 		syscallarg(int) fd;
-		syscallarg(netbsd32_keventp_t) changelist;
+		syscallarg(const netbsd32_keventp_t) changelist;
 		syscallarg(netbsd32_size_t) nchanges;
 		syscallarg(netbsd32_keventp_t) eventlist;
 		syscallarg(netbsd32_size_t) nevents;
 		syscallarg(netbsd32_timespecp_t) timeout;
 	} */
-	int error;
-	size_t maxalloc, nchanges, nevents;
-	struct kevent_ops netbsd32_kevent_ops = {
+	struct kevent_ops kops = {
 		.keo_fetch_timeout = netbsd32_kevent_fetch_timeout,
 		.keo_fetch_changes = netbsd32_kevent_fetch_changes,
 		.keo_put_events = netbsd32_kevent_put_events,
 	};
 
-	nchanges = SCARG(uap, nchanges);
-	nevents = SCARG(uap, nevents);
-	maxalloc = KQ_NEVENTS;
-
-	netbsd32_kevent_ops.keo_private =
-	    kmem_alloc(maxalloc * sizeof(struct netbsd32_kevent), KM_SLEEP);
-
-	error = kevent1(retval, SCARG(uap, fd),
-	    NETBSD32PTR64(SCARG(uap, changelist)), nchanges,
-	    NETBSD32PTR64(SCARG(uap, eventlist)), nevents,
-	    NETBSD32PTR64(SCARG(uap, timeout)), &netbsd32_kevent_ops);
-
-	kmem_free(netbsd32_kevent_ops.keo_private,
-	    maxalloc * sizeof(struct netbsd32_kevent));
-	return error;
+	return netbsd32_kevent1(retval, SCARG(uap, fd),
+	    SCARG(uap, changelist), SCARG(uap, nchanges),
+	    SCARG(uap, eventlist), SCARG(uap, nevents),
+	    SCARG(uap, timeout), &kops);
 }

Added files:

Index: src/sys/compat/netbsd32/netbsd32_event.h
diff -u /dev/null src/sys/compat/netbsd32/netbsd32_event.h:1.1
--- /dev/null	Sat Jul 29 12:38:25 2023
+++ src/sys/compat/netbsd32/netbsd32_event.h	Sat Jul 29 12:38:25 2023
@@ -0,0 +1,45 @@
+/*	$NetBSD: netbsd32_event.h,v 1.1 2023/07/29 12:38:25 rin Exp $	*/
+
+/*
+ * Copyright (c) 2023 NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef	_NETBSD32_EVENT_H_
+#define	_NETBSD32_EVENT_H_
+
+#include <compat/netbsd32/netbsd32.h>
+
+/* netbsd32_event.c */
+int netbsd32_kevent1(register_t *, int, const netbsd32_kevent100p_t,
+    netbsd32_size_t, netbsd32_kevent100p_t, netbsd32_size_t,
+    netbsd32_timespecp_t, struct kevent_ops *);
+
+/* netbsd32_compat_100.c */
+int compat_100_netbsd32_kevent_fetch_changes(void *, const struct kevent *,
+    struct kevent *, size_t, int);
+int compat_100_netbsd32_kevent_put_events(void *, struct kevent *,
+    struct kevent *, size_t, int);
+
+#endif /* !_NETBSD32_EVENT_H_ */

Reply via email to