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. */