Instead of using a define, put `seltrue' directly in the custom
cdev_*_init() macro. This is the approach taken by various MI
macros in sys/conf.h.
While here use the kqfilter equivalent to `seltrue' to ensure both
interfaces are coherent. Without this spec_kqfilter() returns an
error while spec_poll() returns success.
ok?
Index: arch/amd64/amd64/conf.c
===================================================================
RCS file: /cvs/src/sys/arch/amd64/amd64/conf.c,v
retrieving revision 1.68
diff -u -p -r1.68 conf.c
--- arch/amd64/amd64/conf.c 24 Jan 2020 05:14:51 -0000 1.68
+++ arch/amd64/amd64/conf.c 11 May 2020 08:39:54 -0000
@@ -86,21 +86,21 @@ int nblkdev = nitems(bdevsw);
dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
(dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
(dev_type_stop((*))) enodev, 0, seltrue, \
- (dev_type_mmap((*))) enodev }
+ (dev_type_mmap((*))) enodev, 0, 0, seltrue_kqfilter }
-/* open, close, ioctl, select -- XXX should be a generic device */
+/* open, close, ioctl, seltrue, seltrue_kqfilter */
#define cdev_ocis_init(c,n) { \
dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
(dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
- (dev_type_stop((*))) enodev, 0, dev_init(c,n,poll), \
- (dev_type_mmap((*))) enodev, 0 }
+ (dev_type_stop((*))) enodev, 0, seltrue, \
+ (dev_type_mmap((*))) enodev, 0, 0, seltrue_kqfilter }
/* open, close, read */
#define cdev_nvram_init(c,n) { \
dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
(dev_type_write((*))) enodev, (dev_type_ioctl((*))) enodev, \
(dev_type_stop((*))) enodev, 0, seltrue, \
- (dev_type_mmap((*))) enodev, 0 }
+ (dev_type_mmap((*))) enodev, 0, 0, seltrue_kqfilter }
/* open, close, ioctl */
#define cdev_vmm_init(c,n) { \
@@ -109,7 +109,7 @@ int nblkdev = nitems(bdevsw);
(dev_type_write((*))) enodev, \
dev_init(c,n,ioctl), \
(dev_type_stop((*))) enodev, 0, seltrue, \
- (dev_type_mmap((*))) enodev }
+ (dev_type_mmap((*))) enodev, 0, 0, seltrue_kqfilter }
#define mmread mmrw
#define mmwrite mmrw
Index: arch/amd64/include/conf.h
===================================================================
RCS file: /cvs/src/sys/arch/amd64/include/conf.h,v
retrieving revision 1.7
diff -u -p -r1.7 conf.h
--- arch/amd64/include/conf.h 8 Jan 2016 11:20:58 -0000 1.7
+++ arch/amd64/include/conf.h 11 May 2020 08:39:54 -0000
@@ -41,7 +41,6 @@ cdev_decl(fd);
cdev_decl(spkr);
-#define biosselect seltrue
cdev_decl(bios);
#define cdev_acpi_init(c,n) {\
@@ -51,7 +50,6 @@ cdev_decl(bios);
(dev_type_mmap((*))) enodev, 0, 0, dev_init(c,n,kqfilter) }
cdev_decl(acpi);
-#define pctrpoll seltrue
cdev_decl(pctr);
#include "vmm.h"
Index: arch/i386/i386/conf.c
===================================================================
RCS file: /cvs/src/sys/arch/i386/i386/conf.c,v
retrieving revision 1.167
diff -u -p -r1.167 conf.c
--- arch/i386/i386/conf.c 24 Jan 2020 05:14:51 -0000 1.167
+++ arch/i386/i386/conf.c 11 May 2020 08:39:54 -0000
@@ -88,21 +88,21 @@ int nblkdev = nitems(bdevsw);
dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
(dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
(dev_type_stop((*))) enodev, 0, seltrue, \
- (dev_type_mmap((*))) enodev }
+ (dev_type_mmap((*))) enodev, 0, 0, seltrue_kqfilter }
-/* open, close, ioctl, poll -- XXX should be a generic device */
+/* open, close, ioctl, seltrue, seltrue_kqfilter */
#define cdev_ocis_init(c,n) { \
dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
(dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
- (dev_type_stop((*))) enodev, 0, dev_init(c,n,poll), \
- (dev_type_mmap((*))) enodev, 0 }
+ (dev_type_stop((*))) enodev, 0, seltrue, \
+ (dev_type_mmap((*))) enodev, 0, 0, seltrue_kqfilter }
/* open, close, read */
#define cdev_nvram_init(c,n) { \
dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
(dev_type_write((*))) enodev, (dev_type_ioctl((*))) enodev, \
(dev_type_stop((*))) enodev, 0, seltrue, \
- (dev_type_mmap((*))) enodev, 0 }
+ (dev_type_mmap((*))) enodev, 0, 0, seltrue_kqfilter }
#define mmread mmrw
#define mmwrite mmrw
Index: arch/i386/include/conf.h
===================================================================
RCS file: /cvs/src/sys/arch/i386/include/conf.h,v
retrieving revision 1.17
diff -u -p -r1.17 conf.h
--- arch/i386/include/conf.h 18 Jan 2019 01:34:50 -0000 1.17
+++ arch/i386/include/conf.h 11 May 2020 08:39:54 -0000
@@ -65,7 +65,6 @@ cdev_decl(pms);
cdev_decl(joy);
-#define biospoll seltrue
cdev_decl(bios);
cdev_decl(acpi);
@@ -74,5 +73,4 @@ cdev_decl(apm);
cdev_decl(acpiapm);
-#define pctrpoll seltrue
cdev_decl(pctr);