Module Name:    src
Committed By:   mrg
Date:           Tue Oct  8 07:33:15 UTC 2019

Modified Files:
        src/sys/kern: kern_stub.c
        src/sys/sys: conf.h

Log Message:
steal an idea from uwe@ and implement gcc-8 function type cast
friendly methods for sys/conf.h that needs it.

one alias per return type and first function are are needed,
though they can be stubbed to existing code.  the only cost is
the symbol itself, the codegen it the same.


To generate a diff of this commit:
cvs rdiff -u -r1.47 -r1.48 src/sys/kern/kern_stub.c
cvs rdiff -u -r1.152 -r1.153 src/sys/sys/conf.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/kern/kern_stub.c
diff -u src/sys/kern/kern_stub.c:1.47 src/sys/kern/kern_stub.c:1.48
--- src/sys/kern/kern_stub.c:1.47	Sun Jan 27 02:55:26 2019
+++ src/sys/kern/kern_stub.c	Tue Oct  8 07:33:15 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_stub.c,v 1.47 2019/01/27 02:55:26 christos Exp $	*/
+/*	$NetBSD: kern_stub.c,v 1.48 2019/10/08 07:33:15 mrg Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2008 The NetBSD Foundation, Inc.
@@ -62,7 +62,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_stub.c,v 1.47 2019/01/27 02:55:26 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_stub.c,v 1.48 2019/10/08 07:33:15 mrg Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_ktrace.h"
@@ -185,6 +185,16 @@ __strong_alias(dosa_register,sys_nosys);
 __strong_alias(sa_stacks1,sys_nosys);
 
 /*
+ * Stubs for drivers.  See sys/conf.h.
+ */
+__strong_alias(devenodev,enodev);
+__strong_alias(deveopnotsupp,eopnotsupp);
+__strong_alias(devnullop,nullop);
+__strong_alias(ttyenodev,enodev);
+__strong_alias(ttyvenodev,voidop);
+__strong_alias(ttyvnullop,nullop);
+
+/*
  * Stubs for architectures that do not support kernel preemption.
  */
 #ifndef __HAVE_PREEMPTION

Index: src/sys/sys/conf.h
diff -u src/sys/sys/conf.h:1.152 src/sys/sys/conf.h:1.153
--- src/sys/sys/conf.h:1.152	Tue Oct  8 07:16:25 2019
+++ src/sys/sys/conf.h	Tue Oct  8 07:33:14 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: conf.h,v 1.152 2019/10/08 07:16:25 mrg Exp $	*/
+/*	$NetBSD: conf.h,v 1.153 2019/10/08 07:33:14 mrg Exp $	*/
 
 /*-
  * Copyright (c) 1990, 1993
@@ -126,30 +126,37 @@ devmajor_t cdevsw_lookup_major(const str
 #define	dev_type_kqfilter(n)	int n (dev_t, struct knote *)
 #define dev_type_discard(n)	int n (dev_t, off_t, off_t)
 
-#define	noopen		((dev_type_open((*)))enodev)
-#define	noclose		((dev_type_close((*)))enodev)
-#define	noread		((dev_type_read((*)))enodev)
-#define	nowrite		((dev_type_write((*)))enodev)
-#define	noioctl		((dev_type_ioctl((*)))enodev)
-#define	nostop		((dev_type_stop((*)))enodev)
+int devenodev(dev_t, ...);
+int deveopnotsupp(dev_t, ...);
+int devnullop(dev_t, ...);
+int ttyenodev(struct tty *, ...);
+void ttyvenodev(struct tty *, ...);
+void ttyvnullop(struct tty *, ...);
+
+#define	noopen		((dev_type_open((*)))devenodev)
+#define	noclose		((dev_type_close((*)))devenodev)
+#define	noread		((dev_type_read((*)))devenodev)
+#define	nowrite		((dev_type_write((*)))devenodev)
+#define	noioctl		((dev_type_ioctl((*)))devenodev)
+#define	nostop		((dev_type_stop((*)))ttyvenodev)
 #define	notty		NULL
 #define	nopoll		seltrue
 paddr_t	nommap(dev_t, off_t, int);
-#define	nodump		((dev_type_dump((*)))enodev)
+#define	nodump		((dev_type_dump((*)))devenodev)
 #define	nosize		NULL
 #define	nokqfilter	seltrue_kqfilter
-#define nodiscard	((dev_type_discard((*)))enodev)
+#define	nodiscard	((dev_type_discard((*)))devenodev)
 
-#define	nullopen	((dev_type_open((*)))nullop)
-#define	nullclose	((dev_type_close((*)))nullop)
-#define	nullread	((dev_type_read((*)))nullop)
-#define	nullwrite	((dev_type_write((*)))nullop)
-#define	nullioctl	((dev_type_ioctl((*)))nullop)
-#define	nullstop	((dev_type_stop((*)))nullop)
-#define	nullpoll	((dev_type_poll((*)))nullop)
-#define	nulldump	((dev_type_dump((*)))nullop)
-#define	nullkqfilter	((dev_type_kqfilter((*)))eopnotsupp)
-#define nulldiscard	((dev_type_discard((*)))nullop)
+#define	nullopen	((dev_type_open((*)))devnullop)
+#define	nullclose	((dev_type_close((*)))devnullop)
+#define	nullread	((dev_type_read((*)))devnullop)
+#define	nullwrite	((dev_type_write((*)))devnullop)
+#define	nullioctl	((dev_type_ioctl((*)))devnullop)
+#define	nullstop	((dev_type_stop((*)))ttyvnullop)
+#define	nullpoll	((dev_type_poll((*)))devnullop)
+#define	nulldump	((dev_type_dump((*)))devnullop)
+#define	nullkqfilter	((dev_type_kqfilter((*)))deveopnotsupp)
+#define	nulldiscard	((dev_type_discard((*)))devnullop)
 
 /* device access wrappers. */
 

Reply via email to