Module Name:    src
Committed By:   pgoyette
Date:           Tue Jan 22 07:42:42 UTC 2019

Modified Files:
        src/sys/arch/amd64/amd64 [pgoyette-compat]: netbsd32_machdep.c
        src/sys/arch/mips/mips [pgoyette-compat]: netbsd32_machdep.c
        src/sys/arch/sparc/fpu [pgoyette-compat]: fpu.c
        src/sys/arch/sparc64/sparc64 [pgoyette-compat]: netbsd32_machdep.c
        src/sys/compat/common [pgoyette-compat]: if_43.c
        src/sys/compat/netbsd32 [pgoyette-compat]: netbsd32_kern_proc.c
            netbsd32_module.c
        src/sys/dev [pgoyette-compat]: bio.c ccd.c clockctl.c vnd.c
        src/sys/dev/raidframe [pgoyette-compat]: rf_netbsdkintf.c
        src/sys/dev/sysmon [pgoyette-compat]: sysmon_power.c
        src/sys/dev/usb [pgoyette-compat]: ugen.c uhid.c usb.c
        src/sys/dev/wscons [pgoyette-compat]: wsevent.c
        src/sys/fs/puffs [pgoyette-compat]: puffs_msgif.c
        src/sys/kern [pgoyette-compat]: kern_proc.c kern_rndq.c sys_module.c
            sysv_ipc.c tty.c tty_ptm.c uipc_usrreq.c vfs_syscalls.c
        src/sys/net [pgoyette-compat]: if.c if_spppsubr.c rtsock.c
            rtsock_shared.c
        src/sys/net80211 [pgoyette-compat]: ieee80211_ioctl.c
        src/sys/opencrypto [pgoyette-compat]: cryptodev.c
        src/sys/sys [pgoyette-compat]: compat_stub.h module_hook.h tty.h

Log Message:
Convert the MODULE_{,VOID_}HOOK_CALL macros to do everything in-line
rather than defining an intermediate hook##call function.  Almost
all of the hooks are called only once, and although we lose the
ability of doing things like

        if (MODULE_HOOK_CALL(...) == 0) ...

we simplify things quite a bit.  With this change, we no longer need
to have both declaration and definition macros, and the definition
no longer needs to have both prototype argument list and a "real"
argument list.

FWIW, the above if now needs to written as

        int ret;

        MODULE_HOOK_CALL(..., ret);
        if (ret == 0) ...

with appropriate use of braces {}.


To generate a diff of this commit:
cvs rdiff -u -r1.115.2.15 -r1.115.2.16 \
    src/sys/arch/amd64/amd64/netbsd32_machdep.c
cvs rdiff -u -r1.15.2.11 -r1.15.2.12 \
    src/sys/arch/mips/mips/netbsd32_machdep.c
cvs rdiff -u -r1.27.46.4 -r1.27.46.5 src/sys/arch/sparc/fpu/fpu.c
cvs rdiff -u -r1.110.14.4 -r1.110.14.5 \
    src/sys/arch/sparc64/sparc64/netbsd32_machdep.c
cvs rdiff -u -r1.14.2.13 -r1.14.2.14 src/sys/compat/common/if_43.c
cvs rdiff -u -r1.1.2.6 -r1.1.2.7 src/sys/compat/netbsd32/netbsd32_kern_proc.c
cvs rdiff -u -r1.6.2.12 -r1.6.2.13 src/sys/compat/netbsd32/netbsd32_module.c
cvs rdiff -u -r1.13.16.8 -r1.13.16.9 src/sys/dev/bio.c
cvs rdiff -u -r1.175.2.11 -r1.175.2.12 src/sys/dev/ccd.c
cvs rdiff -u -r1.35.14.11 -r1.35.14.12 src/sys/dev/clockctl.c
cvs rdiff -u -r1.263.2.13 -r1.263.2.14 src/sys/dev/vnd.c
cvs rdiff -u -r1.356.2.10 -r1.356.2.11 src/sys/dev/raidframe/rf_netbsdkintf.c
cvs rdiff -u -r1.58.2.8 -r1.58.2.9 src/sys/dev/sysmon/sysmon_power.c
cvs rdiff -u -r1.139.2.9 -r1.139.2.10 src/sys/dev/usb/ugen.c
cvs rdiff -u -r1.101.2.8 -r1.101.2.9 src/sys/dev/usb/uhid.c
cvs rdiff -u -r1.168.2.10 -r1.168.2.11 src/sys/dev/usb/usb.c
cvs rdiff -u -r1.37.2.9 -r1.37.2.10 src/sys/dev/wscons/wsevent.c
cvs rdiff -u -r1.101.10.10 -r1.101.10.11 src/sys/fs/puffs/puffs_msgif.c
cvs rdiff -u -r1.209.2.14 -r1.209.2.15 src/sys/kern/kern_proc.c
cvs rdiff -u -r1.89.16.7 -r1.89.16.8 src/sys/kern/kern_rndq.c
cvs rdiff -u -r1.23.2.16 -r1.23.2.17 src/sys/kern/sys_module.c
cvs rdiff -u -r1.32.16.10 -r1.32.16.11 src/sys/kern/sysv_ipc.c
cvs rdiff -u -r1.275.2.8 -r1.275.2.9 src/sys/kern/tty.c
cvs rdiff -u -r1.37.16.5 -r1.37.16.6 src/sys/kern/tty_ptm.c
cvs rdiff -u -r1.183.2.9 -r1.183.2.10 src/sys/kern/uipc_usrreq.c
cvs rdiff -u -r1.518.2.5 -r1.518.2.6 src/sys/kern/vfs_syscalls.c
cvs rdiff -u -r1.419.2.21 -r1.419.2.22 src/sys/net/if.c
cvs rdiff -u -r1.179.2.10 -r1.179.2.11 src/sys/net/if_spppsubr.c
cvs rdiff -u -r1.238.2.24 -r1.238.2.25 src/sys/net/rtsock.c
cvs rdiff -u -r1.1.2.6 -r1.1.2.7 src/sys/net/rtsock_shared.c
cvs rdiff -u -r1.60.16.7 -r1.60.16.8 src/sys/net80211/ieee80211_ioctl.c
cvs rdiff -u -r1.98.2.10 -r1.98.2.11 src/sys/opencrypto/cryptodev.c
cvs rdiff -u -r1.1.2.51 -r1.1.2.52 src/sys/sys/compat_stub.h
cvs rdiff -u -r1.1.2.13 -r1.1.2.14 src/sys/sys/module_hook.h
cvs rdiff -u -r1.94.2.3 -r1.94.2.4 src/sys/sys/tty.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/arch/amd64/amd64/netbsd32_machdep.c
diff -u src/sys/arch/amd64/amd64/netbsd32_machdep.c:1.115.2.15 src/sys/arch/amd64/amd64/netbsd32_machdep.c:1.115.2.16
--- src/sys/arch/amd64/amd64/netbsd32_machdep.c:1.115.2.15	Mon Jan 21 06:49:27 2019
+++ src/sys/arch/amd64/amd64/netbsd32_machdep.c	Tue Jan 22 07:42:40 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_machdep.c,v 1.115.2.15 2019/01/21 06:49:27 pgoyette Exp $	*/
+/*	$NetBSD: netbsd32_machdep.c,v 1.115.2.16 2019/01/22 07:42:40 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_machdep.c,v 1.115.2.15 2019/01/21 06:49:27 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_machdep.c,v 1.115.2.16 2019/01/22 07:42:40 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -275,17 +275,12 @@ netbsd32_sendsig_siginfo(const ksiginfo_
 
 struct netbsd32_sendsig_hook_t netbsd32_sendsig_hook;
 
-MODULE_CALL_HOOK_DECL(netbsd32_sendsig_hook, void,
-    (const ksiginfo_t *ksi, const sigset_t *mask));
-MODULE_CALL_VOID_HOOK(netbsd32_sendsig_hook,
-    (const ksiginfo_t *ksi, const sigset_t *mask), (ksi, mask),
-    netbsd32_sendsig_siginfo(ksi, mask));
-
 void
 netbsd32_sendsig(const ksiginfo_t *ksi, const sigset_t *mask)
 {
 
-	netbsd32_sendsig_hook_call(ksi, mask);
+	MODULE_CALL_VOID_HOOK(netbsd32_sendsig_hook, (ksi, mask),
+	    netbsd32_sendsig_siginfo(ksi, mask));
 }
 
 #ifdef COREDUMP

Index: src/sys/arch/mips/mips/netbsd32_machdep.c
diff -u src/sys/arch/mips/mips/netbsd32_machdep.c:1.15.2.11 src/sys/arch/mips/mips/netbsd32_machdep.c:1.15.2.12
--- src/sys/arch/mips/mips/netbsd32_machdep.c:1.15.2.11	Mon Jan 21 06:49:27 2019
+++ src/sys/arch/mips/mips/netbsd32_machdep.c	Tue Jan 22 07:42:40 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_machdep.c,v 1.15.2.11 2019/01/21 06:49:27 pgoyette Exp $	*/
+/*	$NetBSD: netbsd32_machdep.c,v 1.15.2.12 2019/01/22 07:42:40 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_machdep.c,v 1.15.2.11 2019/01/21 06:49:27 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_machdep.c,v 1.15.2.12 2019/01/22 07:42:40 pgoyette Exp $");
 
 #include "opt_compat_netbsd.h"
 #include "opt_coredump.h"
@@ -309,17 +309,12 @@ cpu_coredump32(struct lwp *l, struct cor
 
 struct netbsd32_sendsig_hook_t netbsd32_sendsig_hook;
  
-MODULE_CALL_HOOK_DECL(netbsd32_sendsig_hook, void,
-    (const ksiginfo_t *ksi, const sigset_t *mask));
-MODULE_CALL_VOID_HOOK(netbsd32_sendsig_hook,
-    (const ksiginfo_t *ksi, const sigset_t *mask), (ksi, mask),  
-    netbsd32_sendsig_siginfo(ksi, mask));
-
 void
 netbsd32_sendsig(const ksiginfo_t *ksi, const sigset_t *mask)
 {
 
-	netbsd32_sendsig_hook_call(ksi, mask);
+	MODULE_CALL_VOID_HOOK(netbsd32_sendsig_hook, (ksi, mask),  
+	    netbsd32_sendsig_siginfo(ksi, mask));
 }
 
 void    

Index: src/sys/arch/sparc/fpu/fpu.c
diff -u src/sys/arch/sparc/fpu/fpu.c:1.27.46.4 src/sys/arch/sparc/fpu/fpu.c:1.27.46.5
--- src/sys/arch/sparc/fpu/fpu.c:1.27.46.4	Fri Jan 18 00:01:00 2019
+++ src/sys/arch/sparc/fpu/fpu.c	Tue Jan 22 07:42:40 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: fpu.c,v 1.27.46.4 2019/01/18 00:01:00 pgoyette Exp $ */
+/*	$NetBSD: fpu.c,v 1.27.46.5 2019/01/22 07:42:40 pgoyette Exp $ */
 
 /*
  * Copyright (c) 1992, 1993
@@ -41,7 +41,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: fpu.c,v 1.27.46.4 2019/01/18 00:01:00 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: fpu.c,v 1.27.46.5 2019/01/22 07:42:40 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/proc.h>
@@ -120,13 +120,6 @@ static u_char fpu_codes_sunos[] = {
 /* Note: SVR4(Solaris) FPE_* codes happen to be compatible with ours */
 
 /*
- * HOOK for checking if the lwp's emul matches sunos
- */
-MODULE_CALL_HOOK_DECL(get_emul_sunos_hook, int, (const struct emul **emul));
-MODULE_CALL_HOOK(get_emul_sunos_hook, int, (const struct emul ** emul), (emul),
-    enosys());
-
-/*
  * The FPU gave us an exception.  Clean up the mess.  Note that the
  * fp queue can only have FPops in it, never load/store FP registers
  * nor FBfcc instructions.  Experiments with `crashme' prove that
@@ -150,8 +143,9 @@ fpu_cleanup(
 	int code = 0;
 	const struct emul *sunos_emul;
 
-	if (get_emul_sunos_hook_call(&sunos_emul) == 0 &&
-	    p->p_emul == sunos_emul)
+	MODULE_CALL_HOOK(get_emul_sunos_hook, (&sunos_emul), enosys(), ret);
+
+	if (ret == 0 && p->p_emul == sunos_emul)
 		fpu_codes = fpu_codes_sunos;
 	else
 		fpu_codes = fpu_codes_native;

Index: src/sys/arch/sparc64/sparc64/netbsd32_machdep.c
diff -u src/sys/arch/sparc64/sparc64/netbsd32_machdep.c:1.110.14.4 src/sys/arch/sparc64/sparc64/netbsd32_machdep.c:1.110.14.5
--- src/sys/arch/sparc64/sparc64/netbsd32_machdep.c:1.110.14.4	Mon Jan 21 06:49:27 2019
+++ src/sys/arch/sparc64/sparc64/netbsd32_machdep.c	Tue Jan 22 07:42:40 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_machdep.c,v 1.110.14.4 2019/01/21 06:49:27 pgoyette Exp $	*/
+/*	$NetBSD: netbsd32_machdep.c,v 1.110.14.5 2019/01/22 07:42:40 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001 Matthew R. Green
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_machdep.c,v 1.110.14.4 2019/01/21 06:49:27 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_machdep.c,v 1.110.14.5 2019/01/22 07:42:40 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -262,17 +262,12 @@ netbsd32_sendsig_siginfo(const ksiginfo_
 
 struct netbsd32_sendsig_hook_t netbsd32_sendsig_hook;
         
-MODULE_CALL_HOOK_DECL(netbsd32_sendsig_hook, void,
-    (const ksiginfo_t *ksi, const sigset_t *mask));  
-MODULE_CALL_VOID_HOOK(netbsd32_sendsig_hook,
-    (const ksiginfo_t *ksi, const sigset_t *mask), (ksi, mask),
-    netbsd32_sendsig_siginfo(ksi, mask));
-
 void
 netbsd32_sendsig(const ksiginfo_t *ksi, const sigset_t *mask)
 {
 
-	netbsd32_sendsig_hook_call(ksi, mask);
+	MODULE_CALL_VOID_HOOK(netbsd32_sendsig_hook, (ksi, mask),
+	    netbsd32_sendsig_siginfo(ksi, mask));
 }
 
 #undef DEBUG

Index: src/sys/compat/common/if_43.c
diff -u src/sys/compat/common/if_43.c:1.14.2.13 src/sys/compat/common/if_43.c:1.14.2.14
--- src/sys/compat/common/if_43.c:1.14.2.13	Fri Jan 18 00:01:00 2019
+++ src/sys/compat/common/if_43.c	Tue Jan 22 07:42:40 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_43.c,v 1.14.2.13 2019/01/18 00:01:00 pgoyette Exp $	*/
+/*	$NetBSD: if_43.c,v 1.14.2.14 2019/01/22 07:42:40 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 1982, 1986, 1989, 1990, 1993
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_43.c,v 1.14.2.13 2019/01/18 00:01:00 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_43.c,v 1.14.2.14 2019/01/22 07:42:40 pgoyette Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
@@ -78,15 +78,6 @@ __KERNEL_RCSID(0, "$NetBSD: if_43.c,v 1.
 
 #if defined(COMPAT_43)
 
-/*
- * Hook for calling the if43_20 compatability routine.
- *
- * XXX The if43_20 routine doesn't really have any effect, since its
- * XXX return value is ignored (see compat/common/if_43.c)!
- */
-MODULE_CALL_HOOK_DECL(if43_20_hook, int, (u_long ncmd));
-MODULE_CALL_HOOK(if43_20_hook, int, (u_long ncmd), (ncmd), enosys());
-
 /* 
  * Use a wrapper so that the compat_cvtcmd() can return a u_long
  */
@@ -221,7 +212,7 @@ compat_cvtcmd(u_long cmd)
 		case TAPGIFNAME:
 			return ncmd;
 		default:
-			(void)if43_20_hook_call(ncmd);
+			MODULE_CALL_HOOK(if43_20_hook, (ncmd), enosys(), ncmd);
 			return ncmd;
 		}
 	}

Index: src/sys/compat/netbsd32/netbsd32_kern_proc.c
diff -u src/sys/compat/netbsd32/netbsd32_kern_proc.c:1.1.2.6 src/sys/compat/netbsd32/netbsd32_kern_proc.c:1.1.2.7
--- src/sys/compat/netbsd32/netbsd32_kern_proc.c:1.1.2.6	Mon Jan 14 13:34:27 2019
+++ src/sys/compat/netbsd32/netbsd32_kern_proc.c	Tue Jan 22 07:42:40 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_kern_proc.c,v 1.1.2.6 2019/01/14 13:34:27 pgoyette Exp $	*/
+/*	$NetBSD: netbsd32_kern_proc.c,v 1.1.2.7 2019/01/22 07:42:40 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -62,7 +62,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_kern_proc.c,v 1.1.2.6 2019/01/14 13:34:27 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_kern_proc.c,v 1.1.2.7 2019/01/22 07:42:40 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_kstack.h"
@@ -124,14 +124,14 @@ copyin_psstrings_32(struct proc *p, stru
 	return 0;
 }
 
-static void
-get_base32(char **argv, size_t i, vaddr_t *base)
+static vaddr_t
+get_base32(char **argv, size_t i)
 {
 
 	netbsd32_charp *argv32;
 
 	argv32 = (netbsd32_charp *)argv;
-	*base = (vaddr_t)NETBSD32PTR64(argv32[i]);
+	return (vaddr_t)NETBSD32PTR64(argv32[i]);
 }
 
 #if !defined(_RUMPSERVER)

Index: src/sys/compat/netbsd32/netbsd32_module.c
diff -u src/sys/compat/netbsd32/netbsd32_module.c:1.6.2.12 src/sys/compat/netbsd32/netbsd32_module.c:1.6.2.13
--- src/sys/compat/netbsd32/netbsd32_module.c:1.6.2.12	Fri Jan 18 00:01:01 2019
+++ src/sys/compat/netbsd32/netbsd32_module.c	Tue Jan 22 07:42:40 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_module.c,v 1.6.2.12 2019/01/18 00:01:01 pgoyette Exp $	*/
+/*	$NetBSD: netbsd32_module.c,v 1.6.2.13 2019/01/22 07:42:40 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_module.c,v 1.6.2.12 2019/01/18 00:01:01 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_module.c,v 1.6.2.13 2019/01/22 07:42:40 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/dirent.h>
@@ -200,16 +200,6 @@ compat32_80_modctl_compat_stub(struct lw
 	return EPASSTHROUGH;
 }
 
-/* Module hook for netbsd32_80_modctl */
-MODULE_CALL_HOOK_DECL(compat32_80_modctl_hook, int,
-    (struct lwp *lwp, const struct netbsd32_modctl_args *uap,
-      register_t *result));
-MODULE_CALL_HOOK(compat32_80_modctl_hook, int,
-    (struct lwp *lwp, const struct netbsd32_modctl_args *uap,
-      register_t *result),
-    (lwp, uap, result),
-    enosys());
-
 int
 netbsd32_modctl(struct lwp *lwp, const struct netbsd32_modctl_args *uap,
 	register_t *result)
@@ -229,7 +219,8 @@ netbsd32_modctl(struct lwp *lwp, const s
 
 	arg = SCARG_P32(uap, arg);
 
-	error = compat32_80_modctl_hook_call(lwp, uap, result);
+	MODULE_CALL_HOOK(compat32_80_modctl_hook, (lwp, uap, result),
+	    enosys(), error);
 	if (error != EPASSTHROUGH && error != ENOSYS)
 		return error;
 

Index: src/sys/dev/bio.c
diff -u src/sys/dev/bio.c:1.13.16.8 src/sys/dev/bio.c:1.13.16.9
--- src/sys/dev/bio.c:1.13.16.8	Fri Jan 18 00:01:01 2019
+++ src/sys/dev/bio.c	Tue Jan 22 07:42:40 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bio.c,v 1.13.16.8 2019/01/18 00:01:01 pgoyette Exp $ */
+/*	$NetBSD: bio.c,v 1.13.16.9 2019/01/22 07:42:40 pgoyette Exp $ */
 /*	$OpenBSD: bio.c,v 1.9 2007/03/20 02:35:55 marco Exp $	*/
 
 /*
@@ -28,7 +28,7 @@
 /* A device controller ioctl tunnelling device.  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bio.c,v 1.13.16.8 2019/01/18 00:01:01 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bio.c,v 1.13.16.9 2019/01/22 07:42:40 pgoyette Exp $");
 
 #include "opt_compat_netbsd.h"
 
@@ -114,13 +114,6 @@ bioclose(dev_t dev, int flags, int mode,
 	return 0;
 }
 
-/* Hook up the compat_bio_30 routine */
-MODULE_CALL_HOOK_DECL(compat_bio_30_hook, int,
-    (void * cookie, u_long cmd, void *addr, int(*ff)(void *, u_long, void *)));
-MODULE_CALL_HOOK(compat_bio_30_hook, int,
-    (void * cookie, u_long cmd, void *addr, int(*ff)(void *, u_long, void *)),
-    (cookie, cmd, addr, ff), enosys());
-
 static int
 bioioctl(dev_t dev, u_long cmd, void *addr, int flag, struct  lwp *l)
 {
@@ -196,8 +189,9 @@ bioioctl(dev_t dev, u_long cmd, void *ad
 			return ENOENT;
 		}
 		mutex_exit(&bio_lock);
-		error = compat_bio_30_hook_call(common->bc_cookie, cmd, addr,
-		    bio_delegate_ioctl);
+		MODULE_CALL_HOOK(compat_bio_30_hook,
+		    (common->bc_cookie, cmd, addr, bio_delegate_ioctl),
+		    enosys(), error);
 		if (error == ENOSYS)
 			error = bio_delegate_ioctl(common->bc_cookie, cmd,
 			    addr);

Index: src/sys/dev/ccd.c
diff -u src/sys/dev/ccd.c:1.175.2.11 src/sys/dev/ccd.c:1.175.2.12
--- src/sys/dev/ccd.c:1.175.2.11	Fri Jan 18 00:01:01 2019
+++ src/sys/dev/ccd.c	Tue Jan 22 07:42:40 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: ccd.c,v 1.175.2.11 2019/01/18 00:01:01 pgoyette Exp $	*/
+/*	$NetBSD: ccd.c,v 1.175.2.12 2019/01/22 07:42:40 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997, 1998, 1999, 2007, 2009 The NetBSD Foundation, Inc.
@@ -88,7 +88,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ccd.c,v 1.175.2.11 2019/01/18 00:01:01 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ccd.c,v 1.175.2.12 2019/01/22 07:42:40 pgoyette Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
@@ -1056,19 +1056,6 @@ ccdread(dev_t dev, struct uio *uio, int 
 	return (physio(ccdstrategy, NULL, dev, B_READ, minphys, uio));
 }
 
-/* Hook the compat_60 ioctl code
- *
- * This looks ugly, since we pass the "real" ioctl function as an
- * argument to the compat_xxx function.
- */
-MODULE_CALL_HOOK_DECL(ccd_ioctl_60_hook, int,
-    (dev_t dev, u_long cmd, void *data, int flag, struct lwp *l,
-       int (*ff)(dev_t, u_long, void *, int, struct lwp *)));
-MODULE_CALL_HOOK(ccd_ioctl_60_hook, int,
-    (dev_t dev, u_long cmd, void *data, int flag, struct lwp *l,
-       int (*ff)(dev_t, u_long, void *, int, struct lwp *)),
-    (dev, cmd, data, flag, l, ccdioctl), enosys());
-
 /* ARGSUSED */
 static int
 ccdwrite(dev_t dev, struct uio *uio, int flags)
@@ -1095,7 +1082,7 @@ ccdioctl(dev_t dev, u_long cmd, void *da
 {
 	int unit = ccdunit(dev);
 	int i, j, lookedup = 0, error = 0;
-	int part, pmask, make;
+	int part, pmask, make, hook;
 	struct ccd_softc *cs;
 	struct ccd_ioctl *ccio = (struct ccd_ioctl *)data;
 	kauth_cred_t uc;
@@ -1111,8 +1098,10 @@ ccdioctl(dev_t dev, u_long cmd, void *da
 		make = 1;
 		break;
 	default:
-		if (ccd_ioctl_60_hook_call(0, cmd, NULL, 0, NULL, NULL)
-		    == 0)
+		MODULE_CALL_HOOK(ccd_ioctl_60_hook,
+				 (0, cmd, NULL, 0, NULL, NULL),
+				 enosys(), hook);
+		if (hook == 0)
 			make = 1;
 		else
 			make = 0;
@@ -1123,7 +1112,9 @@ ccdioctl(dev_t dev, u_long cmd, void *da
 		return ENOENT;
 	uc = kauth_cred_get();
 
-	error = ccd_ioctl_60_hook_call(dev, cmd, data, flag, l, ccdioctl);
+	MODULE_CALL_HOOK(ccd_ioctl_60_hook,
+			 (dev, cmd, data, flag, l, ccdioctl),
+			 enosys(), error);
 	if (error != ENOSYS)
 		return error;
 

Index: src/sys/dev/clockctl.c
diff -u src/sys/dev/clockctl.c:1.35.14.11 src/sys/dev/clockctl.c:1.35.14.12
--- src/sys/dev/clockctl.c:1.35.14.11	Fri Jan 18 00:01:01 2019
+++ src/sys/dev/clockctl.c	Tue Jan 22 07:42:40 2019
@@ -1,4 +1,4 @@
-/*      $NetBSD: clockctl.c,v 1.35.14.11 2019/01/18 00:01:01 pgoyette Exp $ */
+/*      $NetBSD: clockctl.c,v 1.35.14.12 2019/01/22 07:42:40 pgoyette Exp $ */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: clockctl.c,v 1.35.14.11 2019/01/18 00:01:01 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: clockctl.c,v 1.35.14.12 2019/01/22 07:42:40 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_ntp.h"
@@ -200,13 +200,6 @@ clockctl_modcmd(modcmd_t cmd, void *data
 	return error;
 }
 
-/* Hook the compat_50 stuff */
-MODULE_CALL_HOOK_DECL(clockctl_ioctl_50_hook, int,
-    (dev_t dev, u_long cmd, void *data, int flags, struct lwp *l));
-MODULE_CALL_HOOK(clockctl_ioctl_50_hook, int,
-    (dev_t dev, u_long cmd, void *data, int flags, struct lwp *l),
-    (dev, cmd, data, flags, l), enosys());
-
 int
 clockctlioctl(
     dev_t dev,
@@ -270,7 +263,8 @@ clockctlioctl(
 		break;
 	}
 	default:
-		error = clockctl_ioctl_50_hook_call(dev, cmd, data, flags, l);
+		MODULE_CALL_HOOK(clockctl_ioctl_50_hook,
+		    (dev, cmd, data, flags, l), enosys(), error);
 		if (error == ENOSYS)
 			error = ENOTTY;
 	}

Index: src/sys/dev/vnd.c
diff -u src/sys/dev/vnd.c:1.263.2.13 src/sys/dev/vnd.c:1.263.2.14
--- src/sys/dev/vnd.c:1.263.2.13	Fri Jan 18 00:01:01 2019
+++ src/sys/dev/vnd.c	Tue Jan 22 07:42:40 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: vnd.c,v 1.263.2.13 2019/01/18 00:01:01 pgoyette Exp $	*/
+/*	$NetBSD: vnd.c,v 1.263.2.14 2019/01/22 07:42:40 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997, 1998, 2008 The NetBSD Foundation, Inc.
@@ -91,7 +91,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vnd.c,v 1.263.2.13 2019/01/18 00:01:01 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vnd.c,v 1.263.2.14 2019/01/22 07:42:40 pgoyette Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_vnd.h"
@@ -1126,24 +1126,6 @@ vndioctl_get(struct lwp *l, void *data, 
 	}
 }
 
-MODULE_CALL_HOOK_DECL(compat_vndioctl_30_hook, int,
-    (u_long cmd, struct lwp *l, void *data, int unit, struct vattr *vattr,
-     int (*ff)(struct lwp *, void *, int, struct vattr *)));
-MODULE_CALL_HOOK(compat_vndioctl_30_hook, int,
-    (u_long cmd, struct lwp *l, void *data, int unit, struct vattr *vattr,
-     int (*ff)(struct lwp *, void *, int, struct vattr *)),
-    (cmd, l, data, unit, vattr, ff),
-    enosys());
-
-MODULE_CALL_HOOK_DECL(compat_vndioctl_50_hook, int,
-    (u_long cmd, struct lwp *l, void *data, int unit, struct vattr *vattr,
-     int (*ff)(struct lwp *, void *, int, struct vattr *)));
-MODULE_CALL_HOOK(compat_vndioctl_50_hook, int,
-    (u_long cmd, struct lwp *l, void *data, int unit, struct vattr *vattr,
-     int (*ff)(struct lwp *, void *, int, struct vattr *)),
-    (cmd, l, data, unit, vattr, ff),
-    enosys());
-
 /* ARGSUSED */
 static int
 vndioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
@@ -1180,8 +1162,9 @@ vndioctl(dev_t dev, u_long cmd, void *da
 
 	default:
 		/* First check for COMPAT_50 hook */
-		error = compat_vndioctl_50_hook_call(cmd, l, data, unit,
-		    &vattr, vndioctl_get);
+		MODULE_CALL_HOOK(compat_vndioctl_50_hook,
+		    (cmd, l, data, unit, &vattr, vndioctl_get),
+		    enosys(), error);
 
 		/*
 		 * If not present, then COMPAT_30 hook also not
@@ -1195,8 +1178,9 @@ vndioctl(dev_t dev, u_long cmd, void *da
 
 		/* If not already handled, try the COMPAT_30 hook */
 		if (error == EPASSTHROUGH)
-			error = compat_vndioctl_30_hook_call(cmd, l, data,
-			    unit, &vattr, vndioctl_get);
+			MODULE_CALL_HOOK(compat_vndioctl_30_hook,
+			    (cmd, l, data, unit, &vattr, vndioctl_get),
+			    enosys(), error);
 
 		/* If no COMPAT_30 module, or not handled, check writes */
 		if (error == ENOSYS || error == EPASSTHROUGH) {

Index: src/sys/dev/raidframe/rf_netbsdkintf.c
diff -u src/sys/dev/raidframe/rf_netbsdkintf.c:1.356.2.10 src/sys/dev/raidframe/rf_netbsdkintf.c:1.356.2.11
--- src/sys/dev/raidframe/rf_netbsdkintf.c:1.356.2.10	Fri Jan 18 08:50:42 2019
+++ src/sys/dev/raidframe/rf_netbsdkintf.c	Tue Jan 22 07:42:40 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: rf_netbsdkintf.c,v 1.356.2.10 2019/01/18 08:50:42 pgoyette Exp $	*/
+/*	$NetBSD: rf_netbsdkintf.c,v 1.356.2.11 2019/01/22 07:42:40 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997, 1998, 2008-2011 The NetBSD Foundation, Inc.
@@ -101,7 +101,7 @@
  ***********************************************************/
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rf_netbsdkintf.c,v 1.356.2.10 2019/01/18 08:50:42 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rf_netbsdkintf.c,v 1.356.2.11 2019/01/22 07:42:40 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -1037,25 +1037,6 @@ raid_detach_unlocked(struct raid_softc *
 	return 0;
 }
 
-/* Hooks to call the 5.0 and 8.0 ioctl compat code */
-MODULE_CALL_HOOK_DECL(raidframe50_ioctl_hook, int,
-    (int cmd, int initted, RF_Raid_t *raidPtr, int unit, void *data,
-     RF_Config_t **k_cfg));
-MODULE_CALL_HOOK(raidframe50_ioctl_hook, int,
-    (int cmd, int initted, RF_Raid_t *raidPtr, int unit, void *data,
-     RF_Config_t **k_cfg),
-    (cmd, initted, raidPtr, unit, data, k_cfg),
-    enosys());
-
-MODULE_CALL_HOOK_DECL(raidframe80_ioctl_hook, int,
-    (int cmd, int initted, RF_Raid_t *raidPtr, int unit, void *data,
-     RF_Config_t **k_cfg));
-MODULE_CALL_HOOK(raidframe80_ioctl_hook, int,
-    (int cmd, int initted, RF_Raid_t *raidPtr, int unit, void *data,
-     RF_Config_t **k_cfg),
-    (cmd, initted, raidPtr, unit, data, k_cfg),
-    enosys());
-
 static int
 raidioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
 {
@@ -1139,8 +1120,9 @@ raidioctl(dev_t dev, u_long cmd, void *d
 	 * * If compat code returns EAGAIN, we need to finish via config
 	 * * Otherwise the cmd has been handled and we just return
 	 */
-	retcode = raidframe50_ioctl_hook_call(cmd,
-	    (rs->sc_flags & RAIDF_INITED), raidPtr, unit, data, &k_cfg);
+	MODULE_CALL_HOOK(raidframe50_ioctl_hook,
+	    (cmd, (rs->sc_flags & RAIDF_INITED),raidPtr, unit, data, &k_cfg),
+	    enosys(), retcode);
 	if (retcode == ENOSYS)
 		retcode = 0;
 	else if (retcode == EAGAIN)
@@ -1148,8 +1130,9 @@ raidioctl(dev_t dev, u_long cmd, void *d
 	else if (retcode != EPASSTHROUGH)
 		return retcode;
 
-	retcode = raidframe80_ioctl_hook_call(cmd,
-	    (rs->sc_flags & RAIDF_INITED), raidPtr, unit, data, &k_cfg);
+	MODULE_CALL_HOOK(raidframe80_ioctl_hook,
+	    (cmd, (rs->sc_flags & RAIDF_INITED),raidPtr, unit, data, &k_cfg),
+	    enosys(), retcode);
 	if (retcode == ENOSYS)
 		retcode = 0;
 	else if (retcode == EAGAIN)

Index: src/sys/dev/sysmon/sysmon_power.c
diff -u src/sys/dev/sysmon/sysmon_power.c:1.58.2.8 src/sys/dev/sysmon/sysmon_power.c:1.58.2.9
--- src/sys/dev/sysmon/sysmon_power.c:1.58.2.8	Mon Jan 21 06:49:28 2019
+++ src/sys/dev/sysmon/sysmon_power.c	Tue Jan 22 07:42:40 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysmon_power.c,v 1.58.2.8 2019/01/21 06:49:28 pgoyette Exp $	*/
+/*	$NetBSD: sysmon_power.c,v 1.58.2.9 2019/01/22 07:42:40 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2007 Juan Romero Pardines.
@@ -69,7 +69,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sysmon_power.c,v 1.58.2.8 2019/01/21 06:49:28 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sysmon_power.c,v 1.58.2.9 2019/01/22 07:42:40 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -316,15 +316,6 @@ sysmon_power_event_queue_flush(void)
 }
 
 /*
- * Call the compat hook function
- */
-MODULE_CALL_HOOK_DECL(compat_sysmon_power_40_hook, void,
-    (power_event_t *pev, struct sysmon_pswitch *pswitch, int event));
-MODULE_CALL_VOID_HOOK(compat_sysmon_power_40_hook,
-    (power_event_t *pev, struct sysmon_pswitch *pswitch, int event),
-    (pev, pswitch, event), __nothing);
-
-/*
  * sysmon_power_daemon_task:
  *
  *	Assign required power event members and sends a signal
@@ -355,7 +346,8 @@ sysmon_power_daemon_task(struct power_ev
 
 		pev.pev_type = POWER_EVENT_SWITCH_STATE_CHANGE;
 
-		compat_sysmon_power_40_hook_call(&pev, pswitch, event);
+		MODULE_CALL_VOID_HOOK(compat_sysmon_power_40_hook,
+		    (&pev, pswitch, event), __nothing);
 
 		error = sysmon_power_make_dictionary(ped->dict,
 						     pswitch,

Index: src/sys/dev/usb/ugen.c
diff -u src/sys/dev/usb/ugen.c:1.139.2.9 src/sys/dev/usb/ugen.c:1.139.2.10
--- src/sys/dev/usb/ugen.c:1.139.2.9	Fri Jan 18 00:01:01 2019
+++ src/sys/dev/usb/ugen.c	Tue Jan 22 07:42:41 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: ugen.c,v 1.139.2.9 2019/01/18 00:01:01 pgoyette Exp $	*/
+/*	$NetBSD: ugen.c,v 1.139.2.10 2019/01/22 07:42:41 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 1998, 2004 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
 
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ugen.c,v 1.139.2.9 2019/01/18 00:01:01 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ugen.c,v 1.139.2.10 2019/01/22 07:42:41 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -1439,11 +1439,6 @@ ugen_get_alt_index(struct ugen_softc *sc
 	return usbd_get_interface_altindex(iface);
 }
 
-MODULE_CALL_HOOK_DECL(usb_subr_30_fill_hook, int,
-    (struct usbd_device *, struct usb_device_info_old *, int,
-      void (*)(struct usbd_device *, char *, size_t, char *, size_t, int, int),
-      int (*)(char *, size_t, int)));
-
 Static int
 ugen_do_ioctl(struct ugen_softc *sc, int endpt, u_long cmd,
 	      void *addr, int flag, struct lwp *l)
@@ -1842,11 +1837,16 @@ ugen_do_ioctl(struct ugen_softc *sc, int
 				     (struct usb_device_info *)addr, 0);
 		break;
 	case USB_GET_DEVICEINFO_OLD:
-		if (usb_subr_30_fill_hook_call(sc->sc_udev,
-			     (struct usb_device_info_old *)addr, 0,
-			     usbd_devinfo_vp, usbd_printBCD) == 0)
+	{
+		int ret;
+		MODULE_CALL_HOOK(usb_subr_30_fill_hook,
+		    (sc->sc_udev, (struct usb_device_info_old *)addr, 0,
+		      usbd_devinfo_vp, usbd_printBCD),
+		    enosys(), ret);
+		if (ret == 0)
 			return 0;
 		return EINVAL;
+	}
 	default:
 		return EINVAL;
 	}

Index: src/sys/dev/usb/uhid.c
diff -u src/sys/dev/usb/uhid.c:1.101.2.8 src/sys/dev/usb/uhid.c:1.101.2.9
--- src/sys/dev/usb/uhid.c:1.101.2.8	Fri Jan 18 00:01:01 2019
+++ src/sys/dev/usb/uhid.c	Tue Jan 22 07:42:41 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: uhid.c,v 1.101.2.8 2019/01/18 00:01:01 pgoyette Exp $	*/
+/*	$NetBSD: uhid.c,v 1.101.2.9 2019/01/22 07:42:41 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 1998, 2004, 2008, 2012 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uhid.c,v 1.101.2.8 2019/01/18 00:01:01 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uhid.c,v 1.101.2.9 2019/01/22 07:42:41 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -513,11 +513,6 @@ uhidwrite(dev_t dev, struct uio *uio, in
 	return error;
 }
 
-MODULE_CALL_HOOK_DECL(usb_subr_30_fill_hook, int,
-    (struct usbd_device *, struct usb_device_info_old *, int,
-      void (*)(struct usbd_device *, char *, size_t, char *, size_t, int, int),
-      int (*)(char *, size_t, int)));
-
 int
 uhid_do_ioctl(struct uhid_softc *sc, u_long cmd, void *addr,
     int flag, struct lwp *l)
@@ -659,9 +654,11 @@ uhid_do_ioctl(struct uhid_softc *sc, u_l
 				     (struct usb_device_info *)addr, 0);
 		break;
 	case USB_GET_DEVICEINFO_OLD:
-		err = usb_subr_30_fill_hook_call( sc->sc_hdev.sc_parent->sc_udev,
-			    (struct usb_device_info_old *)addr, 0,
-			    usbd_devinfo_vp, usbd_printBCD);
+		MODULE_CALL_HOOK(usb_subr_30_fill_hook,
+                    (sc->sc_hdev.sc_parent->sc_udev,
+		      (struct usb_device_info_old *)addr, 0,
+                      usbd_devinfo_vp, usbd_printBCD),
+                    enosys(), err);
 		if (err == 0)
 			return 0;
 		break;

Index: src/sys/dev/usb/usb.c
diff -u src/sys/dev/usb/usb.c:1.168.2.10 src/sys/dev/usb/usb.c:1.168.2.11
--- src/sys/dev/usb/usb.c:1.168.2.10	Fri Jan 18 00:01:01 2019
+++ src/sys/dev/usb/usb.c	Tue Jan 22 07:42:41 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: usb.c,v 1.168.2.10 2019/01/18 00:01:01 pgoyette Exp $	*/
+/*	$NetBSD: usb.c,v 1.168.2.11 2019/01/22 07:42:41 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 1998, 2002, 2008, 2012 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: usb.c,v 1.168.2.10 2019/01/18 00:01:01 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: usb.c,v 1.168.2.11 2019/01/22 07:42:41 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_usb.h"
@@ -656,13 +656,6 @@ usbopen(dev_t dev, int flag, int mode, s
 	return 0;
 }
 
-/* Call the hook for usb30_copy_to_old() */
-MODULE_CALL_HOOK_DECL(usb_subr_30_copy_hook, int,
-    (struct usb_event *ue, struct usb_event_old *ueo, struct uio *uio));
-MODULE_CALL_HOOK(usb_subr_30_copy_hook, int,
-    (struct usb_event *ue, struct usb_event_old *ueo, struct uio *uio),
-    (ue, ueo, uio), enosys());
-
 int
 usbread(dev_t dev, struct uio *uio, int flag)
 {
@@ -703,7 +696,8 @@ usbread(dev_t dev, struct uio *uio, int 
 	mutex_exit(&usb_event_lock);
 	if (!error) {
 		if (useold) { /* copy fields to old struct */
-			error = usb_subr_30_copy_hook_call(ue, ueo, uio);
+			MODULE_CALL_HOOK(usb_subr_30_copy_hook,
+			    (ue, ueo, uio), enosys(), error);
 			if (error == ENOSYS)
 				error = EINVAL;
 
@@ -735,19 +729,6 @@ usbclose(dev_t dev, int flag, int mode,
 	return 0;
 }
 
-/* Call hook for usbd30_fill_device_info_old() */
-MODULE_CALL_HOOK_DECL(usb_subr_30_fill_hook, int,
-    (struct usbd_device *, struct usb_device_info_old *, int,
-      void (*)(struct usbd_device *, char *, size_t, char *, size_t, int, int),
-      int (*)(char *, size_t, int)));
-MODULE_CALL_HOOK(usb_subr_30_fill_hook, int,
-    (struct usbd_device *udev, struct usb_device_info_old * addr, int usedev,
-      void (*fill_devinfo_vp)(struct usbd_device *, char *, size_t, char *,
-	size_t, int, int),
-      int (*printBCD)(char *, size_t, int)),
-    (udev, addr, usedev, fill_devinfo_vp, printBCD),
-    enosys());
-
 int
 usbioctl(dev_t devt, u_long cmd, void *data, int flag, struct lwp *l)
 {
@@ -896,8 +877,9 @@ usbioctl(dev_t devt, u_long cmd, void *d
 			error = ENXIO;
 			goto fail;
 		}
-		error = usb_subr_30_fill_hook_call(dev, di, 1,
-				usbd_devinfo_vp, usbd_printBCD);
+		MODULE_CALL_HOOK(usb_subr_30_fill_hook,
+		    (dev, di, 1, usbd_devinfo_vp, usbd_printBCD),
+		    enosys(), error);
 		if (error == ENOSYS)
 			error = EINVAL;
 		if (error)

Index: src/sys/dev/wscons/wsevent.c
diff -u src/sys/dev/wscons/wsevent.c:1.37.2.9 src/sys/dev/wscons/wsevent.c:1.37.2.10
--- src/sys/dev/wscons/wsevent.c:1.37.2.9	Fri Jan 18 00:01:01 2019
+++ src/sys/dev/wscons/wsevent.c	Tue Jan 22 07:42:41 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: wsevent.c,v 1.37.2.9 2019/01/18 00:01:01 pgoyette Exp $ */
+/* $NetBSD: wsevent.c,v 1.37.2.10 2019/01/22 07:42:41 pgoyette Exp $ */
 
 /*-
  * Copyright (c) 2006, 2008 The NetBSD Foundation, Inc.
@@ -104,7 +104,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: wsevent.c,v 1.37.2.9 2019/01/18 00:01:01 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wsevent.c,v 1.37.2.10 2019/01/22 07:42:41 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -189,12 +189,6 @@ wsevent_fini(struct wseventvar *ev)
 	softint_disestablish(ev->sih);
 }
 
-MODULE_CALL_HOOK_DECL(wsevent_50_copyout_events_hook, int,
-    (const struct wscons_event *events, int cnt, struct uio *uio));
-MODULE_CALL_HOOK(wsevent_50_copyout_events_hook, int,
-    (const struct wscons_event *events, int cnt, struct uio *uio),
-    (events, cnt, uio), enosys());
-
 static int
 wsevent_copyout_events(const struct wscons_event *events, int cnt,
     struct uio *uio, int ver)
@@ -203,7 +197,8 @@ wsevent_copyout_events(const struct wsco
 
 	switch (ver) {
 	case 0:
-		error = wsevent_50_copyout_events_hook_call(events, cnt, uio);
+		MODULE_CALL_HOOK(wsevent_50_copyout_events_hook,
+		    (events, cnt, uio), enosys(), error);
 		if (error == ENOSYS)
 			error = EINVAL;
 		return error;

Index: src/sys/fs/puffs/puffs_msgif.c
diff -u src/sys/fs/puffs/puffs_msgif.c:1.101.10.10 src/sys/fs/puffs/puffs_msgif.c:1.101.10.11
--- src/sys/fs/puffs/puffs_msgif.c:1.101.10.10	Mon Jan 21 06:49:28 2019
+++ src/sys/fs/puffs/puffs_msgif.c	Tue Jan 22 07:42:41 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: puffs_msgif.c,v 1.101.10.10 2019/01/21 06:49:28 pgoyette Exp $	*/
+/*	$NetBSD: puffs_msgif.c,v 1.101.10.11 2019/01/22 07:42:41 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 2005, 2006, 2007  Antti Kantee.  All Rights Reserved.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: puffs_msgif.c,v 1.101.10.10 2019/01/21 06:49:28 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: puffs_msgif.c,v 1.101.10.11 2019/01/22 07:42:41 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -323,21 +323,6 @@ puffs_getmsgid(struct puffs_mount *pmp)
 	return rv;
 }
 
-/* Routines to call the compat hooks */
-	/* Out-going */
-MODULE_CALL_HOOK_DECL(puffs_50_out_hook, int,
-     (struct puffs_req *oreq, struct puffs_req **creqp, ssize_t *deltap));
-MODULE_CALL_HOOK(puffs_50_out_hook, int,
-     (struct puffs_req *oreq, struct puffs_req **creqp, ssize_t *deltap),
-     (oreq, creqp, deltap), enosys());
-
-	/* Incoming */
-MODULE_CALL_HOOK_DECL(puffs_50_in_hook, void,
-     (struct puffs_req *oreq, struct puffs_req *creqp));
-MODULE_CALL_VOID_HOOK(puffs_50_in_hook,
-     (struct puffs_req *oreq, struct puffs_req *creqp),
-     (oreq, creqp), __nothing);
-
 /*
  * A word about reference counting of parks.  A reference must be taken
  * when accessing a park and additionally when it is on a queue.  So
@@ -351,6 +336,9 @@ puffs_msg_enqueue(struct puffs_mount *pm
 	struct lwp *l = curlwp;
 	struct puffs_req *preq, *creq;
 	ssize_t delta;
+#if 1
+	int ret;
+#endif
 
 	/*
 	 * Some clients reuse a park, so reset some flags.  We might
@@ -364,14 +352,17 @@ puffs_msg_enqueue(struct puffs_mount *pm
 
 #if 1
 	/* check if we do compat adjustments */
-	if (pmp->pmp_docompat &&
-	    puffs_50_out_hook_call(preq, &creq, &delta) == 0) {
-		park->park_creq = park->park_preq;
-		park->park_creqlen = park->park_maxlen;
-
-		park->park_maxlen += delta;
-		park->park_copylen += delta;
-		park->park_preq = preq = creq;
+	if (pmp->pmp_docompat) {
+		MODULE_CALL_HOOK(puffs_50_out_hook, (preq, &creq, &delta),
+		    enosys(), ret);
+		if (ret == 0) {
+			park->park_creq = park->park_preq;
+			park->park_creqlen = park->park_maxlen;
+	
+			park->park_maxlen += delta;
+			park->park_copylen += delta;
+			park->park_preq = preq = creq;
+		}
 	}
 #endif
 
@@ -822,7 +813,8 @@ puffsop_msg(void *ctx, struct puffs_req 
 			size_t csize;
 
 			KASSERT(pmp->pmp_docompat);
-			puffs_50_in_hook_call(preq, park->park_creq);
+			MODULE_CALL_VOID_HOOK(puffs_50_in_hook,
+			     (preq, park->park_creq), __nothing);
 			creq = park->park_creq;
 			csize = park->park_creqlen;
 			park->park_creq = park->park_preq;

Index: src/sys/kern/kern_proc.c
diff -u src/sys/kern/kern_proc.c:1.209.2.14 src/sys/kern/kern_proc.c:1.209.2.15
--- src/sys/kern/kern_proc.c:1.209.2.14	Mon Jan 21 06:49:28 2019
+++ src/sys/kern/kern_proc.c	Tue Jan 22 07:42:41 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_proc.c,v 1.209.2.14 2019/01/21 06:49:28 pgoyette Exp $	*/
+/*	$NetBSD: kern_proc.c,v 1.209.2.15 2019/01/22 07:42:41 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -62,7 +62,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_proc.c,v 1.209.2.14 2019/01/21 06:49:28 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_proc.c,v 1.209.2.15 2019/01/22 07:42:41 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_kstack.h"
@@ -1892,28 +1892,17 @@ sysctl_doeproc(SYSCTLFN_ARGS)
 	return error;
 }
 
-/*
- * compat_netbsd32 hooks
- */
-#if !defined(_RUMPKERNEL)
-MODULE_CALL_HOOK_DECL(kern_proc_32_copyin_hook, int,
-    (struct proc *p, struct ps_strings *s));
-MODULE_CALL_HOOK(kern_proc_32_copyin_hook, int,
-    (struct proc *p, struct ps_strings *s), (p, s), enosys());
-
-MODULE_CALL_HOOK_DECL(kern_proc_32_base_hook, void,
-    (char **argv, size_t i, vaddr_t *base));
-MODULE_CALL_VOID_HOOK(kern_proc_32_base_hook,
-    (char **argv, size_t i, vaddr_t *base), (argv, i, base), __nothing);
-#endif /* !defined(_RUMPKERNEL) */
-
 int
 copyin_psstrings(struct proc *p, struct ps_strings *arginfo)
 {
-
 #if !defined(_RUMPKERNEL)
-	if (p->p_flag & PK_32)
-		return kern_proc_32_copyin_hook_call(p, arginfo);
+	int retval;
+
+	if (p->p_flag & PK_32) {
+		MODULE_CALL_HOOK(kern_proc_32_copyin_hook, (p, arginfo),
+		    enosys(), retval);
+		return retval;
+	}
 #endif /* !defined(_RUMPKERNEL) */
 
 	return copyin_proc(p, (void *)p->p_psstrp, arginfo, sizeof(*arginfo));
@@ -2126,7 +2115,8 @@ copy_procargs(struct proc *p, int oid, s
 
 #if !defined(_RUMPKERNEL)
 		if (p->p_flag & PK_32)
-			kern_proc_32_base_hook_call(argv, i++, &base);
+			MODULE_CALL_HOOK(kern_proc_32_base_hook,
+			    (argv, i++), 0, base);
 		else
 #endif /* !defined(_RUMPKERNEL) */
 			base = (vaddr_t)argv[i++];

Index: src/sys/kern/kern_rndq.c
diff -u src/sys/kern/kern_rndq.c:1.89.16.7 src/sys/kern/kern_rndq.c:1.89.16.8
--- src/sys/kern/kern_rndq.c:1.89.16.7	Fri Jan 18 00:01:01 2019
+++ src/sys/kern/kern_rndq.c	Tue Jan 22 07:42:41 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_rndq.c,v 1.89.16.7 2019/01/18 00:01:01 pgoyette Exp $	*/
+/*	$NetBSD: kern_rndq.c,v 1.89.16.8 2019/01/22 07:42:41 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 1997-2013 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_rndq.c,v 1.89.16.7 2019/01/18 00:01:01 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_rndq.c,v 1.89.16.8 2019/01/22 07:42:41 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/atomic.h>
@@ -1446,15 +1446,6 @@ krs_setflags(krndsource_t *kr, uint32_t 
 	}
 }
 
-MODULE_CALL_HOOK_DECL(rnd_ioctl_50_hook, int, (struct file *, u_long, void *));
-MODULE_CALL_HOOK_DECL(rnd_ioctl_50_32_hook, int,
-    (struct file *, u_long, void *));
-
-MODULE_CALL_HOOK(rnd_ioctl_50_hook, int,
-    (struct file *fp, u_long cmd, void *addr), (fp, cmd, addr), enosys());
-MODULE_CALL_HOOK(rnd_ioctl_50_32_hook, int,
-    (struct file *fp, u_long cmd, void *addr), (fp, cmd, addr), enosys());
-
 int
 rnd_system_ioctl(struct file *fp, u_long cmd, void *addr)
 {
@@ -1501,10 +1492,12 @@ rnd_system_ioctl(struct file *fp, u_long
 		break;
 
 	default:
-		ret = rnd_ioctl_50_hook_call(fp, cmd, addr);
+		MODULE_CALL_HOOK(rnd_ioctl_50_hook, (fp, cmd, addr),
+		    enosys(), ret);
 #if defined(_LP64)
 		if (ret == ENOSYS)
-			ret = rnd_ioctl_50_32_hook_call(fp, cmd, addr);
+			MODULE_CALL_HOOK(rnd_ioctl_50_32_hook, (fp, cmd, addr),
+			    enosys(), ret);
 #endif
 		if (ret == ENOSYS)
 			ret = ENOTTY;

Index: src/sys/kern/sys_module.c
diff -u src/sys/kern/sys_module.c:1.23.2.16 src/sys/kern/sys_module.c:1.23.2.17
--- src/sys/kern/sys_module.c:1.23.2.16	Fri Jan 18 00:01:01 2019
+++ src/sys/kern/sys_module.c	Tue Jan 22 07:42:41 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: sys_module.c,v 1.23.2.16 2019/01/18 00:01:01 pgoyette Exp $	*/
+/*	$NetBSD: sys_module.c,v 1.23.2.17 2019/01/22 07:42:41 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sys_module.c,v 1.23.2.16 2019/01/18 00:01:01 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sys_module.c,v 1.23.2.17 2019/01/22 07:42:41 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_modular.h"
@@ -261,12 +261,6 @@ handle_modctl_stat(struct iovec *iov, vo
 	return error;
 }
 
-/* MODULE_HOOK glue for modstat_80 */
-MODULE_CALL_HOOK_DECL(compat_modstat_80_hook, int,
-    (int cmd, struct iovec *iov, void *arg));
-MODULE_CALL_HOOK(compat_modstat_80_hook, int,
-    (int cmd, struct iovec *iov, void *arg), (cmd, iov, arg), enosys());
-
 int
 sys_modctl(struct lwp *l, const struct sys_modctl_args *uap,
 	   register_t *retval)
@@ -331,8 +325,9 @@ sys_modctl(struct lwp *l, const struct s
 		break;
 
 	default:
-		error = compat_modstat_80_hook_call(SCARG(uap, cmd),
-		    &iov, arg);
+
+		MODULE_CALL_HOOK(compat_modstat_80_hook,
+		    (SCARG(uap, cmd), &iov, arg), enosys(), error);
 		if (error == ENOSYS)
 			error = EINVAL;
 		break;

Index: src/sys/kern/sysv_ipc.c
diff -u src/sys/kern/sysv_ipc.c:1.32.16.10 src/sys/kern/sysv_ipc.c:1.32.16.11
--- src/sys/kern/sysv_ipc.c:1.32.16.10	Fri Jan 18 08:50:57 2019
+++ src/sys/kern/sysv_ipc.c	Tue Jan 22 07:42:41 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysv_ipc.c,v 1.32.16.10 2019/01/18 08:50:57 pgoyette Exp $	*/
+/*	$NetBSD: sysv_ipc.c,v 1.32.16.11 2019/01/22 07:42:41 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2007 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sysv_ipc.c,v 1.32.16.10 2019/01/18 08:50:57 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sysv_ipc.c,v 1.32.16.11 2019/01/22 07:42:41 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_sysv.h"
@@ -349,10 +349,6 @@ stub_sysvipc50_sysctl(SYSCTLFN_ARGS)
 	return EPASSTHROUGH;
 }
 
-MODULE_CALL_HOOK_DECL(sysvipc50_sysctl_hook, int, (SYSCTLFN_PROTO));
-MODULE_CALL_HOOK(sysvipc50_sysctl_hook, int, (SYSCTLFN_ARGS),
-    (SYSCTLFN_CALL(rnode)), stub_sysvipc50_sysctl(SYSCTLFN_CALL(rnode)));
-
 static int
 sysctl_kern_sysvipc(SYSCTLFN_ARGS)
 {
@@ -379,7 +375,8 @@ sysctl_kern_sysvipc(SYSCTLFN_ARGS)
  * to the non-compat sysctl code.
  */
 
-	error = sysvipc50_sysctl_hook_call(SYSCTLFN_CALL(rnode));
+	MODULE_CALL_HOOK(sysvipc50_sysctl_hook, (SYSCTLFN_CALL(rnode)),
+	    stub_sysvipc50_sysctl(SYSCTLFN_CALL(rnode)), error);
 	if (error != EPASSTHROUGH)
 		return error;
 

Index: src/sys/kern/tty.c
diff -u src/sys/kern/tty.c:1.275.2.8 src/sys/kern/tty.c:1.275.2.9
--- src/sys/kern/tty.c:1.275.2.8	Fri Jan 18 00:01:01 2019
+++ src/sys/kern/tty.c	Tue Jan 22 07:42:41 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: tty.c,v 1.275.2.8 2019/01/18 00:01:01 pgoyette Exp $	*/
+/*	$NetBSD: tty.c,v 1.275.2.9 2019/01/22 07:42:41 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -63,7 +63,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tty.c,v 1.275.2.8 2019/01/18 00:01:01 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tty.c,v 1.275.2.9 2019/01/22 07:42:41 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -919,15 +919,6 @@ ttyoutput(int c, struct tty *tp)
 }
 
 /*
- * MODULE_HOOK glue for compat_60_ttioctl
- */
-MODULE_CALL_HOOK_DECL(compat_60_ttioctl_hook, int,
-    (dev_t, u_long, void *, int, struct lwp *));
-MODULE_CALL_HOOK(compat_60_ttioctl_hook, int,
-    (dev_t dev, u_long cmd, void *data, int flag, struct lwp *l),
-    (dev, cmd, data, flag, l), enosys());
-    
-/*
  * Ioctls for all tty devices.  Called after line-discipline specific ioctl
  * has been called to do discipline-specific functions and/or reject any
  * of these ioctl commands.
@@ -1422,16 +1413,16 @@ ttioctl(struct tty *tp, u_long cmd, void
 		/* We may have to load the compat_60 module for this. */
 		for (;;) {
 			rw_enter(&ttcompat_lock, RW_READER);
-			error = compat_60_ttioctl_hook_call(tp->t_dev, cmd,
-			    data, flag, l);
+			MODULE_CALL_HOOK(compat_60_ttioctl_hook,
+			    (tp->t_dev, cmd, data, flag, l), enosys(), error);
 			if (error != ENOSYS) {
 				break;
 			}
 			rw_exit(&ttcompat_lock);
 			(void)module_autoload("compat_60", MODULE_CLASS_EXEC);
 			rw_enter(&ttcompat_lock, RW_READER);
-			error = compat_60_ttioctl_hook_call(tp->t_dev, cmd,
-			    data, flag, l);
+			MODULE_CALL_HOOK(compat_60_ttioctl_hook,
+			    (tp->t_dev, cmd, data, flag, l), enosys(), error);
 			if (error == ENOSYS) {
 				rw_exit(&ttcompat_lock);
 				return EPASSTHROUGH;

Index: src/sys/kern/tty_ptm.c
diff -u src/sys/kern/tty_ptm.c:1.37.16.5 src/sys/kern/tty_ptm.c:1.37.16.6
--- src/sys/kern/tty_ptm.c:1.37.16.5	Fri Jan 18 00:01:01 2019
+++ src/sys/kern/tty_ptm.c	Tue Jan 22 07:42:41 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: tty_ptm.c,v 1.37.16.5 2019/01/18 00:01:01 pgoyette Exp $	*/
+/*	$NetBSD: tty_ptm.c,v 1.37.16.6 2019/01/22 07:42:41 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tty_ptm.c,v 1.37.16.5 2019/01/18 00:01:01 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tty_ptm.c,v 1.37.16.6 2019/01/22 07:42:41 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -373,24 +373,6 @@ ptmclose(dev_t dev, int flag, int mode, 
 	return (0);
 }
 
-/*
- * MODULE_HOOK glue for ptmioctl_60
- */
-
-int                     
-stub_compat_ptmioctl_60(dev_t dev, u_long cmd, void *data, int flag,
-    struct lwp *l)
-{               
-        
-        return EPASSTHROUGH;
-}
-
-MODULE_CALL_HOOK_DECL(compat_60_ptmioctl_hook, int,
-    (dev_t, u_long, void *, int, struct lwp *));
-MODULE_CALL_HOOK(compat_60_ptmioctl_hook, int,
-    (dev_t dev, u_long cmd, void *data, int flag, struct lwp *l),
-    (dev, cmd, data, flag, l), enosys());
-
 static int
 /*ARGSUSED*/
 ptmioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
@@ -421,7 +403,8 @@ ptmioctl(dev_t dev, u_long cmd, void *da
 			goto bad2;
 		return 0;
 	default:
-		error = compat_60_ptmioctl_hook_call(dev, cmd, data, flag, l);
+		MODULE_CALL_HOOK(compat_60_ptmioctl_hook,
+		    (dev, cmd, data, flag, l), EPASSTHROUGH, error);
 		if (error != EPASSTHROUGH)
 			return error;
 		DPRINTF(("ptmioctl EINVAL\n"));

Index: src/sys/kern/uipc_usrreq.c
diff -u src/sys/kern/uipc_usrreq.c:1.183.2.9 src/sys/kern/uipc_usrreq.c:1.183.2.10
--- src/sys/kern/uipc_usrreq.c:1.183.2.9	Fri Jan 18 00:01:01 2019
+++ src/sys/kern/uipc_usrreq.c	Tue Jan 22 07:42:41 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: uipc_usrreq.c,v 1.183.2.9 2019/01/18 00:01:01 pgoyette Exp $	*/
+/*	$NetBSD: uipc_usrreq.c,v 1.183.2.10 2019/01/22 07:42:41 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2000, 2004, 2008, 2009 The NetBSD Foundation, Inc.
@@ -96,7 +96,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uipc_usrreq.c,v 1.183.2.9 2019/01/18 00:01:01 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_usrreq.c,v 1.183.2.10 2019/01/22 07:42:41 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -330,12 +330,6 @@ unp_free(struct unpcb *unp)
 	kmem_free(unp, sizeof(*unp));
 }
 
-MODULE_CALL_HOOK_DECL(compat_70_unp_hook, struct mbuf *,
-    (struct lwp *, struct mbuf *));
-MODULE_CALL_HOOK(compat_70_unp_hook, struct mbuf *,
-    (struct lwp *lwp, struct mbuf *control),
-    (lwp, control), stub_compat_70_unp_addsockcred(lwp, control));
-
 static int
 unp_output(struct mbuf *m, struct mbuf *control, struct unpcb *unp)
 {
@@ -356,7 +350,8 @@ unp_output(struct mbuf *m, struct mbuf *
 	if (unp->unp_conn->unp_flags & UNP_WANTCRED)
 		control = unp_addsockcred(curlwp, control);
 	if (unp->unp_conn->unp_flags & UNP_OWANTCRED)
-		control = compat_70_unp_hook_call(curlwp, control);
+		MODULE_CALL_HOOK(compat_70_unp_hook, (curlwp, control),
+		    stub_compat_70_unp_addsockcred(curlwp, control), control);
 	if (sbappendaddr(&so2->so_rcv, (const struct sockaddr *)sun, m,
 	    control) == 0) {
 		unp_dispose(control);
@@ -537,7 +532,9 @@ unp_send(struct socket *so, struct mbuf 
 			 * SOCK_STREAM and SOCK_SEQPACKET.
 			 */
 			unp->unp_conn->unp_flags &= ~UNP_OWANTCRED;
-			control = compat_70_unp_hook_call(curlwp, control);
+			MODULE_CALL_HOOK(compat_70_unp_hook, (curlwp, control),
+			    stub_compat_70_unp_addsockcred(curlwp, control),
+			    control);
 		}
 		/*
 		 * Send to paired receive port, and then reduce

Index: src/sys/kern/vfs_syscalls.c
diff -u src/sys/kern/vfs_syscalls.c:1.518.2.5 src/sys/kern/vfs_syscalls.c:1.518.2.6
--- src/sys/kern/vfs_syscalls.c:1.518.2.5	Fri Jan 18 00:01:01 2019
+++ src/sys/kern/vfs_syscalls.c	Tue Jan 22 07:42:41 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_syscalls.c,v 1.518.2.5 2019/01/18 00:01:01 pgoyette Exp $	*/
+/*	$NetBSD: vfs_syscalls.c,v 1.518.2.6 2019/01/22 07:42:41 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -70,7 +70,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_syscalls.c,v 1.518.2.5 2019/01/18 00:01:01 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_syscalls.c,v 1.518.2.6 2019/01/22 07:42:41 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_fileassoc.h"
@@ -1624,21 +1624,6 @@ fd_open(const char *path, int open_flags
 	return error;
 }
 
-/*
- * Check permissions, allocate an open file structure,
- * and call the device open routine if any.
- */
-static int
-stub_sys_openat_10(struct pathbuf **pb)
-{
-
-	return 0;
-}
-
-MODULE_CALL_HOOK_DECL(compat_10_openat_hook, int, (struct pathbuf **));
-MODULE_CALL_HOOK(compat_10_openat_hook, int, (struct pathbuf **pb), (pb),
-    stub_sys_openat_10(pb));
-
 static int
 do_sys_openat(lwp_t *l, int fdat, const char *path, int flags,
     int mode, int *fd)
@@ -1649,7 +1634,8 @@ do_sys_openat(lwp_t *l, int fdat, const 
 	int error;
 
 	if (path == NULL) {
-		error = compat_10_openat_hook_call(&pb);
+		MODULE_CALL_HOOK(compat_10_openat_hook, (&pb),
+		    0, error);
 		if (error)
 			return error;
 	} else {

Index: src/sys/net/if.c
diff -u src/sys/net/if.c:1.419.2.21 src/sys/net/if.c:1.419.2.22
--- src/sys/net/if.c:1.419.2.21	Fri Jan 18 00:01:02 2019
+++ src/sys/net/if.c	Tue Jan 22 07:42:41 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: if.c,v 1.419.2.21 2019/01/18 00:01:02 pgoyette Exp $	*/
+/*	$NetBSD: if.c,v 1.419.2.22 2019/01/22 07:42:41 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2000, 2001, 2008 The NetBSD Foundation, Inc.
@@ -90,7 +90,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if.c,v 1.419.2.21 2019/01/18 00:01:02 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if.c,v 1.419.2.22 2019/01/22 07:42:41 pgoyette Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_inet.h"
@@ -3118,30 +3118,6 @@ out:
 }
 
 /*
- * Interface for calling the compat routines
- */
-MODULE_CALL_HOOK_DECL(uipc_syscalls_40_hook, int,
-    (struct lwp *l, int cmd, void *data));
-MODULE_CALL_HOOK(uipc_syscalls_40_hook, int,
-    (struct lwp *l, int cmd, void *data), (cmd, data), enosys());
-
-MODULE_CALL_HOOK_DECL(uipc_syscalls_50_hook, int,
-    (struct lwp *l, int cmd, void *data));
-MODULE_CALL_HOOK(uipc_syscalls_50_hook, int,
-    (struct lwp *l, int cmd, void *data), (l, cmd, data), enosys());
-
-MODULE_CALL_HOOK_DECL(if_43_cvtcmd_hook, int,
-    (u_long *ncmd, u_long ocmd));
-MODULE_CALL_HOOK(if_43_cvtcmd_hook, int,
-    (u_long *ncmd, u_long ocmd), (ncmd, ocmd), enosys());
-
-MODULE_CALL_HOOK_DECL(if_43_ifioctl_hook, int,
-    (struct socket *so, u_long ocmd, u_long cmd, void *data, struct lwp *l));
-MODULE_CALL_HOOK(if_43_ifioctl_hook, int,
-    (struct socket *so, u_long ocmd, u_long cmd, void *data, struct lwp *l),
-    (so, ocmd, cmd, data, l), enosys());
-
-/*
  * Interface ioctls.
  */
 static int
@@ -3149,7 +3125,7 @@ doifioctl(struct socket *so, u_long cmd,
 {
 	struct ifnet *ifp;
 	struct ifreq *ifr;
-	int error = 0;
+	int error = 0, hook;
 	u_long ocmd = cmd;
 	short oif_flags;
 	struct ifreq ifrb;
@@ -3164,10 +3140,12 @@ doifioctl(struct socket *so, u_long cmd,
 	case SIOCINITIFADDR:
 		return EPERM;
 	default:
-		error = uipc_syscalls_40_hook_call(l, cmd, data);
+		MODULE_CALL_HOOK(uipc_syscalls_40_hook, (cmd, data), enosys(),
+		    error);
 		if (error != ENOSYS)
 			return error;
-		error = uipc_syscalls_50_hook_call(l, cmd, data);
+		MODULE_CALL_HOOK(uipc_syscalls_50_hook, (l, cmd, data),
+		    enosys(), error);
 		if (error != ENOSYS)
 			return error;
 		error = 0;
@@ -3175,7 +3153,8 @@ doifioctl(struct socket *so, u_long cmd,
 	}
 
 	ifr = data;
-	if (if_43_cvtcmd_hook_call(&cmd, ocmd) != ENOSYS) {
+	MODULE_CALL_HOOK(if_43_cvtcmd_hook, (&cmd, ocmd), enosys(), hook);
+	if (hook != ENOSYS) {
 		if (cmd != ocmd) {
 			oifr = data;
 			data = ifr = &ifrb;
@@ -3275,7 +3254,8 @@ doifioctl(struct socket *so, u_long cmd,
 		error = EOPNOTSUPP;
 	else {
 		KERNEL_LOCK_IF_IFP_MPSAFE(ifp);
-		error = if_43_ifioctl_hook_call(so, ocmd, cmd, data, l);
+		MODULE_CALL_HOOK(if_43_ifioctl_hook,
+			     (so, ocmd, cmd, data, l), enosys(), error);
 		if (error == ENOSYS)
 			error = (*so->so_proto->pr_usrreqs->pr_ioctl)(so,
 			    cmd, data, ifp);
@@ -3428,8 +3408,10 @@ ifreq_setaddr(u_long cmd, struct ifreq *
 	struct ifreq ifrb;
 	struct oifreq *oifr = NULL;
 	u_long ocmd = cmd;
+	int hook;
 
-	if (if_43_cvtcmd_hook_call(&cmd, ocmd) != ENOSYS) {
+	MODULE_CALL_HOOK(if_43_cvtcmd_hook, (&cmd, ocmd), enosys(), hook);
+	if (hook != ENOSYS) {
 		if (cmd != ocmd) {
 			oifr = (struct oifreq *)(void *)ifr;
 			ifr = &ifrb;

Index: src/sys/net/if_spppsubr.c
diff -u src/sys/net/if_spppsubr.c:1.179.2.10 src/sys/net/if_spppsubr.c:1.179.2.11
--- src/sys/net/if_spppsubr.c:1.179.2.10	Fri Jan 18 00:01:02 2019
+++ src/sys/net/if_spppsubr.c	Tue Jan 22 07:42:41 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_spppsubr.c,v 1.179.2.10 2019/01/18 00:01:02 pgoyette Exp $	 */
+/*	$NetBSD: if_spppsubr.c,v 1.179.2.11 2019/01/22 07:42:41 pgoyette Exp $	 */
 
 /*
  * Synchronous PPP/Cisco link level subroutines.
@@ -41,7 +41,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_spppsubr.c,v 1.179.2.10 2019/01/18 00:01:02 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_spppsubr.c,v 1.179.2.11 2019/01/22 07:42:41 pgoyette Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_inet.h"
@@ -5611,12 +5611,6 @@ sppp_suggest_ip6_addr(struct sppp *sp, s
 }
 #endif /*INET6*/
 
-/* Hook the sppp_params50 compat code */
-MODULE_CALL_HOOK_DECL(sppp_params_50_hook, int,
-    (struct sppp *sp, u_long cmd, void *data));
-MODULE_CALL_HOOK(sppp_params_50_hook, int,
-    (struct sppp *sp, u_long cmd, void *data), (sp, cmd, data), enosys());
-
 /*
  * Process ioctl requests specific to the PPP interface.
  * Permissions have already been checked.
@@ -5922,7 +5916,8 @@ sppp_params(struct sppp *sp, u_long cmd,
 	    {
 		int ret;
 
-		ret = sppp_params_50_hook_call(sp, cmd, data);
+		MODULE_CALL_HOOK(sppp_params_50_hook, (sp, cmd, data),
+		    enosys(), ret);
 		if (ret != ENOSYS)
 			return ret;
 		return (EINVAL);

Index: src/sys/net/rtsock.c
diff -u src/sys/net/rtsock.c:1.238.2.24 src/sys/net/rtsock.c:1.238.2.25
--- src/sys/net/rtsock.c:1.238.2.24	Mon Jan 21 06:49:28 2019
+++ src/sys/net/rtsock.c	Tue Jan 22 07:42:41 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: rtsock.c,v 1.238.2.24 2019/01/21 06:49:28 pgoyette Exp $	*/
+/*	$NetBSD: rtsock.c,v 1.238.2.25 2019/01/22 07:42:41 pgoyette Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -61,7 +61,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.238.2.24 2019/01/21 06:49:28 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rtsock.c,v 1.238.2.25 2019/01/22 07:42:41 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -123,81 +123,6 @@ rt_msg3(int type, struct rt_addrinfo *rt
 	return rt_msg2(type, rtinfo, cpv, w, lenp);
 }
 
-/*
- * MODULE_HOOK glue for rtsock_14_oifmsg and rtsock_14_iflist
- */
-MODULE_CALL_HOOK_DECL(rtsock_14_oifmsg_hook, void, (struct ifnet *ifp));
-MODULE_CALL_VOID_HOOK(rtsock_14_oifmsg_hook, (struct ifnet *ifp), (ifp),
-    __nothing);
-
-MODULE_CALL_HOOK_DECL(rtsock_14_iflist_hook, int,
-    (struct ifnet *ifp, struct rt_walkarg *w, struct rt_addrinfo *info,
-     size_t len));
-MODULE_CALL_HOOK(rtsock_14_iflist_hook, int,
-    (struct ifnet *ifp, struct rt_walkarg *w, struct rt_addrinfo *info,
-     size_t len),
-    (ifp, w, info, len),
-    enosys());
-
-/*
- * MODULE_HOOK glue for rtsock_50 ifaddr_list and various message routines
- */
-MODULE_CALL_HOOK_DECL(rtsock_50_iflist_hook, int,
-    (struct ifnet *ifp, struct rt_walkarg *w, struct rt_addrinfo *info, 
-     size_t len));
-MODULE_CALL_HOOK(rtsock_50_iflist_hook,  int,
-    (struct ifnet *ifp, struct rt_walkarg *w, struct rt_addrinfo *info,
-     size_t len),               
-    (ifp, w, info, len),
-    enosys());
-
-MODULE_CALL_HOOK_DECL(rtsock_50_rt_missmsg_hook, void,
-    (int, const struct rt_addrinfo *, int, int));
-MODULE_CALL_VOID_HOOK(rtsock_50_rt_missmsg_hook, 
-    (int type, const struct rt_addrinfo *rtinfo, int flags, int error),
-    (type, rtinfo, flags, error), __nothing);
-
-MODULE_CALL_HOOK_DECL(rtsock_50_rt_ifmsg_hook, void, (struct ifnet *));
-MODULE_CALL_VOID_HOOK(rtsock_50_rt_ifmsg_hook, (struct ifnet *ifp), (ifp),
-    __nothing);
-
-MODULE_CALL_HOOK_DECL(rtsock_50_rt_newaddrmsg_hook, void,
-    (int, struct ifaddr *, int, struct rtentry *));
-MODULE_CALL_VOID_HOOK(rtsock_50_rt_newaddrmsg_hook, 
-    (int cmd, struct ifaddr *ifa, int error, struct rtentry *rt),
-    (cmd, ifa, error, rt), __nothing);
-
-MODULE_CALL_HOOK_DECL(rtsock_50_rt_ifannouncemsg_hook, void,
-    (struct ifnet *, int what));
-MODULE_CALL_VOID_HOOK(rtsock_50_rt_ifannouncemsg_hook, 
-    (struct ifnet *ifp, int what), (ifp, what), __nothing);
-
-MODULE_CALL_HOOK_DECL(rtsock_50_rt_ieee80211msg_hook, void,
-    (struct ifnet *, int, void *, size_t));
-MODULE_CALL_VOID_HOOK(rtsock_50_rt_ieee80211msg_hook, 
-    (struct ifnet *ifp, int what, void *data, size_t data_len),
-    (ifp, what, data, data_len), __nothing);
-
-MODULE_CALL_HOOK_DECL(rtsock_50_oifmsg_hook, void, (struct ifnet *ifp));
-MODULE_CALL_VOID_HOOK(rtsock_50_oifmsg_hook, (struct ifnet *ifp), (ifp),
-    __nothing);
-
-/*
- * MODULE_HOOK glue for rtsock70_newaddrmsg1, rtsock70_ifaddr_listaddr,
- * and rtsock70_ifaddr_listif
- */
-MODULE_CALL_HOOK_DECL(rtsock_70_newaddr_hook, void, (int, struct ifaddr *));
-MODULE_CALL_VOID_HOOK(rtsock_70_newaddr_hook, (int cmd, struct ifaddr *ifa),
-    (cmd, ifa), __nothing);
-
-MODULE_CALL_HOOK_DECL(rtsock_70_iflist_hook, int,
-    (struct rt_walkarg *, struct ifaddr *, struct rt_addrinfo *));
-MODULE_CALL_HOOK(rtsock_70_iflist_hook, int,
-    (struct rt_walkarg *w, struct ifaddr *ifa, struct rt_addrinfo *info),
-    (w, ifa, info), 
-    enosys());
-
-
 static int
 if_addrflags(struct ifaddr *ifa)
 {
@@ -408,12 +333,12 @@ sysctl_iflist(int af, struct rt_walkarg 
 				error = sysctl_iflist_if(ifp, w, &info, len);
 				break;
 			case NET_RT_OOIFLIST: /* old _50 */
-				error = rtsock_50_iflist_hook_call(ifp, w, &info,
-				    len);
+				MODULE_CALL_HOOK(rtsock_50_iflist_hook,
+				    (ifp, w, &info, len), enosys(), error);
 				break;
 			case NET_RT_OOOIFLIST: /* old _14 */
-				error = rtsock_14_iflist_hook_call(ifp, w,
-				    &info, len);
+				MODULE_CALL_HOOK(rtsock_14_iflist_hook,
+				   (ifp, w, &info, len), enosys(), error);
 				break;
 			default:
 				error = EINVAL;
@@ -442,8 +367,8 @@ sysctl_iflist(int af, struct rt_walkarg 
 			case NET_RT_OIFLIST:
 			case NET_RT_OOIFLIST:
 			case NET_RT_OOOIFLIST:
-				error = rtsock_70_iflist_hook_call(w, ifa,
-				    &info);
+				MODULE_CALL_HOOK(rtsock_70_iflist_hook,
+				    (w, ifa, &info), enosys(), error);
 				break;
 			default:
 				error = EINVAL;

Index: src/sys/net/rtsock_shared.c
diff -u src/sys/net/rtsock_shared.c:1.1.2.6 src/sys/net/rtsock_shared.c:1.1.2.7
--- src/sys/net/rtsock_shared.c:1.1.2.6	Mon Jan 21 06:49:28 2019
+++ src/sys/net/rtsock_shared.c	Tue Jan 22 07:42:41 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: rtsock_shared.c,v 1.1.2.6 2019/01/21 06:49:28 pgoyette Exp $	*/
+/*	$NetBSD: rtsock_shared.c,v 1.1.2.7 2019/01/22 07:42:41 pgoyette Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -61,7 +61,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rtsock_shared.c,v 1.1.2.6 2019/01/21 06:49:28 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rtsock_shared.c,v 1.1.2.7 2019/01/22 07:42:41 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -113,7 +113,8 @@ __KERNEL_RCSID(0, "$NetBSD: rtsock_share
 #define	if_xannouncemsghdr	if_announcemsghdr50
 #define	COMPATNAME(x)	compat_50_ ## x
 #define	DOMAINNAME	"oroute"
-#define	COMPATCALL(name, args)	rtsock_50_ ## name ## _hook_call args
+#define	COMPATCALL(name, args)		\
+	MODULE_CALL_VOID_HOOK(rtsock_50_ ## name ## _hook, args, __nothing);
 #define	RTS_CTASSERT(x)	__nothing
 CTASSERT(sizeof(struct ifa_xmsghdr) == 20);
 DOMAIN_DEFINE(compat_50_routedomain); /* forward declare and add to link set */
@@ -1297,47 +1298,6 @@ again:
 }
 
 /*
- * MODULE_HOOK glue for rtsock_14_oifmsg and rtsock_14_iflist
- */
-MODULE_CALL_HOOK_DECL(rtsock_14_oifmsg_hook, void, (struct ifnet *ifp));
-
-MODULE_CALL_HOOK_DECL(rtsock_14_iflist_hook, int,
-    (struct ifnet *ifp, struct rt_walkarg *w, struct rt_addrinfo *info,
-     size_t len));
-
-/*
- * MODULE_HOOK glue for rtsock_50 ifaddr_list and various message routines
- */
-MODULE_CALL_HOOK_DECL(rtsock_50_iflist_hook, int,
-    (struct ifnet *ifp, struct rt_walkarg *w, struct rt_addrinfo *info, 
-     size_t len));
-
-MODULE_CALL_HOOK_DECL(rtsock_50_rt_missmsg_hook, void,
-    (int, const struct rt_addrinfo *, int, int));
-
-MODULE_CALL_HOOK_DECL(rtsock_50_rt_ifmsg_hook, void, (struct ifnet *));
-
-MODULE_CALL_HOOK_DECL(rtsock_50_rt_newaddrmsg_hook, void,
-    (int, struct ifaddr *, int, struct rtentry *));
-
-MODULE_CALL_HOOK_DECL(rtsock_50_rt_ifannouncemsg_hook, void,
-    (struct ifnet *, int what));
-
-MODULE_CALL_HOOK_DECL(rtsock_50_rt_ieee80211msg_hook, void,
-    (struct ifnet *, int, void *, size_t));
-
-MODULE_CALL_HOOK_DECL(rtsock_50_oifmsg_hook, void, (struct ifnet *ifp));
-
-/*
- * MODULE_HOOK glue for rtsock70_newaddrmsg1, rtsock70_ifaddr_listaddr,
- * and rtsock70_ifaddr_listif
- */
-MODULE_CALL_HOOK_DECL(rtsock_70_newaddr_hook, void, (int, struct ifaddr *));
-
-MODULE_CALL_HOOK_DECL(rtsock_70_iflist_hook, int,
-    (struct rt_walkarg *, struct ifaddr *, struct rt_addrinfo *));
-
-/*
  * This routine is called to generate a message from the routing
  * socket indicating that a redirect has occurred, a routing lookup
  * has failed, or that a protocol has detected timeouts to a particular
@@ -1390,8 +1350,8 @@ COMPATNAME(rt_ifmsg)(struct ifnet *ifp)
 	if (m == NULL)
 		return;
 	COMPATNAME(route_enqueue)(m, 0);
-	rtsock_14_oifmsg_hook_call(ifp);
-	rtsock_50_oifmsg_hook_call(ifp);
+	MODULE_CALL_VOID_HOOK(rtsock_14_oifmsg_hook, (ifp), __nothing);
+	MODULE_CALL_VOID_HOOK(rtsock_50_oifmsg_hook, (ifp), __nothing);
 }
 
 /*
@@ -1459,7 +1419,8 @@ COMPATNAME(rt_newaddrmsg)(int cmd, struc
 			default:
 				panic("%s: unknown command %d", __func__, cmd);
 			}
-			rtsock_70_newaddr_hook_call(ncmd, ifa);
+			MODULE_CALL_VOID_HOOK(rtsock_70_newaddr_hook,
+			    (ncmd, ifa), __nothing);
 			info.rti_info[RTAX_IFA] = sa = ifa->ifa_addr;
 			KASSERT(ifp->if_dl != NULL);
 			info.rti_info[RTAX_IFP] = ifp->if_dl->ifa_addr;

Index: src/sys/net80211/ieee80211_ioctl.c
diff -u src/sys/net80211/ieee80211_ioctl.c:1.60.16.7 src/sys/net80211/ieee80211_ioctl.c:1.60.16.8
--- src/sys/net80211/ieee80211_ioctl.c:1.60.16.7	Fri Jan 18 00:01:02 2019
+++ src/sys/net80211/ieee80211_ioctl.c	Tue Jan 22 07:42:41 2019
@@ -36,7 +36,7 @@
 __FBSDID("$FreeBSD: src/sys/net80211/ieee80211_ioctl.c,v 1.35 2005/08/30 14:27:47 avatar Exp $");
 #endif
 #ifdef __NetBSD__
-__KERNEL_RCSID(0, "$NetBSD: ieee80211_ioctl.c,v 1.60.16.7 2019/01/18 00:01:02 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ieee80211_ioctl.c,v 1.60.16.8 2019/01/22 07:42:41 pgoyette Exp $");
 #endif
 
 /*
@@ -2556,14 +2556,6 @@ ieee80211_ioctl(struct ieee80211com *ic,
 #endif /* __FreeBSD__ */
 
 #ifdef __NetBSD__
-/*
- * Compatability glue
- */
-MODULE_CALL_HOOK_DECL(ieee80211_ostats_hook, int,
-    (struct ieee80211_ostats *ostats, struct ieee80211_stats *stats));
-MODULE_CALL_HOOK(ieee80211_ostats_hook, int,
-    (struct ieee80211_ostats *ostats, struct ieee80211_stats *stats),
-    (ostats, stats), enosys());
 
 int
 ieee80211_ioctl(struct ieee80211com *ic, u_long cmd, void *data)
@@ -2864,7 +2856,8 @@ ieee80211_ioctl(struct ieee80211com *ic,
 
 		ifr = (struct ifreq *)data;
 		s = splnet();
-		error = ieee80211_ostats_hook_call(&ostats, &ic->ic_stats);
+		MODULE_CALL_HOOK(ieee80211_ostats_hook,
+		    (&ostats, &ic->ic_stats), enosys(), error);
 		if (error == ENOSYS)
 			error = EINVAL;
 		if (error == 0)

Index: src/sys/opencrypto/cryptodev.c
diff -u src/sys/opencrypto/cryptodev.c:1.98.2.10 src/sys/opencrypto/cryptodev.c:1.98.2.11
--- src/sys/opencrypto/cryptodev.c:1.98.2.10	Fri Jan 18 00:01:02 2019
+++ src/sys/opencrypto/cryptodev.c	Tue Jan 22 07:42:42 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: cryptodev.c,v 1.98.2.10 2019/01/18 00:01:02 pgoyette Exp $ */
+/*	$NetBSD: cryptodev.c,v 1.98.2.11 2019/01/22 07:42:42 pgoyette Exp $ */
 /*	$FreeBSD: src/sys/opencrypto/cryptodev.c,v 1.4.2.4 2003/06/03 00:09:02 sam Exp $	*/
 /*	$OpenBSD: cryptodev.c,v 1.53 2002/07/10 22:21:30 mickey Exp $	*/
 
@@ -64,7 +64,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cryptodev.c,v 1.98.2.10 2019/01/18 00:01:02 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cryptodev.c,v 1.98.2.11 2019/01/22 07:42:42 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -219,19 +219,6 @@ cryptof_write(file_t *fp, off_t *poff,
 	return EIO;
 }
 
-/*
- * Hook the ocryptodev 50 compat code
- *
- * This is a bit messy because we need to pass local stuff to the
- * compat routines.  The compat routines may be built-in to a
- * kernel which doesn't contain the local stuff, so the compat
- * code cannot directly reference them as globals.
- */
-MODULE_CALL_HOOK_DECL(ocryptof_50_hook, int,
-    (struct file *fp, u_long cmd, void *data));
-MODULE_CALL_HOOK(ocryptof_50_hook, int,
-    (struct file *fp, u_long cmd, void *data), (fp, cmd, data), enosys());
-
 /* ARGSUSED */
 int
 cryptof_ioctl(struct file *fp, u_long cmd, void *data)
@@ -453,7 +440,9 @@ reterr:
 		break;
 	default:
 		/* Check for backward compatible commands */
-		error = ocryptof_50_hook_call(fp, cmd, data);
+
+		MODULE_CALL_HOOK(ocryptof_50_hook, (fp, cmd, data),
+		    enosys(), error);
 		if (error == ENOSYS)
 			error = EINVAL;
 		return error;

Index: src/sys/sys/compat_stub.h
diff -u src/sys/sys/compat_stub.h:1.1.2.51 src/sys/sys/compat_stub.h:1.1.2.52
--- src/sys/sys/compat_stub.h:1.1.2.51	Fri Jan 18 00:01:02 2019
+++ src/sys/sys/compat_stub.h	Tue Jan 22 07:42:42 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: compat_stub.h,v 1.1.2.51 2019/01/18 00:01:02 pgoyette Exp $	*/
+/* $NetBSD: compat_stub.h,v 1.1.2.52 2019/01/22 07:42:42 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -266,7 +266,7 @@ extern int kern_sig_43_pgid_mask;
 struct ps_strings;
 MODULE_HOOK(kern_proc_32_copyin_hook, int,
     (struct proc *, struct ps_strings *));
-MODULE_HOOK(kern_proc_32_base_hook, void, (char **, size_t, vaddr_t *));
+MODULE_HOOK(kern_proc_32_base_hook, vaddr_t, (char **, size_t));
 
 /*
  * Hook to allow sparc fpu code to see if a process is using sunos

Index: src/sys/sys/module_hook.h
diff -u src/sys/sys/module_hook.h:1.1.2.13 src/sys/sys/module_hook.h:1.1.2.14
--- src/sys/sys/module_hook.h:1.1.2.13	Mon Jan 21 06:49:28 2019
+++ src/sys/sys/module_hook.h	Tue Jan 22 07:42:42 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: module_hook.h,v 1.1.2.13 2019/01/21 06:49:28 pgoyette Exp $	*/
+/* $NetBSD: module_hook.h,v 1.1.2.14 2019/01/22 07:42:42 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -104,16 +104,9 @@ static void (hook ## _unset)(void)				\
 	pserialize_destroy(hook.psz);				\
 }
 
-#define MODULE_CALL_HOOK_DECL(hook, type, decl)			\
-type								\
-hook ## _call decl;
-
-#define MODULE_CALL_HOOK(hook, type, decl, args, default)	\
-type								\
-hook ## _call decl						\
-{								\
+#define MODULE_CALL_HOOK(hook, args, default, retval)		\
+do {								\
 	bool __hooked;						\
-	type __hook_retval;					\
 	int __hook_s;						\
 								\
 	__hook_s = pserialize_read_enter();			\
@@ -125,19 +118,16 @@ hook ## _call decl						\
 	pserialize_read_exit(__hook_s);				\
 								\
 	if (__hooked) {						\
-		__hook_retval = (*hook.f)args;			\
+		retval = (*hook.f)args;				\
 		localcount_release(&hook.lc, &hook.cv,		\
 		    &hook.mtx);					\
 	} else {						\
-		__hook_retval = default;			\
+		retval = default;				\
 	}							\
-	return __hook_retval;					\
-}
+} while /* CONSTCOND */ (0)
 
-#define MODULE_CALL_VOID_HOOK(hook, decl, args, default)	\
-void								\
-hook ## _call decl						\
-{								\
+#define MODULE_CALL_VOID_HOOK(hook, args, default)		\
+do {								\
 	bool __hooked;						\
 	int __hook_s;						\
 								\
@@ -156,6 +146,6 @@ hook ## _call decl						\
 	} else {						\
 		default;					\
 	}							\
-}
+} while /* CONSTCOND */ (0)
 
 #endif	/* _SYS_MODULE_HOOK_H */

Index: src/sys/sys/tty.h
diff -u src/sys/sys/tty.h:1.94.2.3 src/sys/sys/tty.h:1.94.2.4
--- src/sys/sys/tty.h:1.94.2.3	Mon Oct 15 09:51:34 2018
+++ src/sys/sys/tty.h	Tue Jan 22 07:42:42 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: tty.h,v 1.94.2.3 2018/10/15 09:51:34 pgoyette Exp $	*/
+/*	$NetBSD: tty.h,v 1.94.2.4 2019/01/22 07:42:42 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -313,8 +313,6 @@ bool	 ttypull(struct tty *);
 int	clalloc(struct clist *, int, int);
 void	clfree(struct clist *);
 
-int stub_compat_ptmioctl_60(dev_t, u_long, void *, int, struct lwp *);
-
 /* overwritten to be non-null if ptm(4) is present */
 
 struct ptm_pty;

Reply via email to