Module Name: src Committed By: riastradh Date: Mon Mar 28 12:39:18 UTC 2022
Modified Files: src/sys/sys: conf.h src/sys/uvm: uvm_device.c Log Message: driver(9): New types dev_*_t for device driver devsw operations. These will serve to replace the archaic and kludgey dev_type_* macros which should've been typedefs all along. To generate a diff of this commit: cvs rdiff -u -r1.160 -r1.161 src/sys/sys/conf.h cvs rdiff -u -r1.72 -r1.73 src/sys/uvm/uvm_device.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/sys/conf.h diff -u src/sys/sys/conf.h:1.160 src/sys/sys/conf.h:1.161 --- src/sys/sys/conf.h:1.160 Mon Mar 28 12:39:10 2022 +++ src/sys/sys/conf.h Mon Mar 28 12:39:18 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: conf.h,v 1.160 2022/03/28 12:39:10 riastradh Exp $ */ +/* $NetBSD: conf.h,v 1.161 2022/03/28 12:39:18 riastradh Exp $ */ /*- * Copyright (c) 1990, 1993 @@ -116,22 +116,37 @@ const struct cdevsw *cdevsw_lookup(dev_t devmajor_t bdevsw_lookup_major(const struct bdevsw *); devmajor_t cdevsw_lookup_major(const struct cdevsw *); -#define dev_type_open(n) int n (dev_t, int, int, struct lwp *) -#define dev_type_cancel(n) int n (dev_t, int, int, struct lwp *) -#define dev_type_close(n) int n (dev_t, int, int, struct lwp *) -#define dev_type_read(n) int n (dev_t, struct uio *, int) -#define dev_type_write(n) int n (dev_t, struct uio *, int) -#define dev_type_ioctl(n) \ - int n (dev_t, u_long, void *, int, struct lwp *) -#define dev_type_stop(n) void n (struct tty *, int) -#define dev_type_tty(n) struct tty * n (dev_t) -#define dev_type_poll(n) int n (dev_t, int, struct lwp *) -#define dev_type_mmap(n) paddr_t n (dev_t, off_t, int) -#define dev_type_strategy(n) void n (struct buf *) -#define dev_type_dump(n) int n (dev_t, daddr_t, void *, size_t) -#define dev_type_size(n) int n (dev_t) -#define dev_type_kqfilter(n) int n (dev_t, struct knote *) -#define dev_type_discard(n) int n (dev_t, off_t, off_t) +typedef int dev_open_t(dev_t, int, int, struct lwp *); +typedef int dev_cancel_t(dev_t, int, int, struct lwp *); +typedef int dev_close_t(dev_t, int, int, struct lwp *); +typedef int dev_read_t(dev_t, struct uio *, int); +typedef int dev_write_t(dev_t, struct uio *, int); +typedef int dev_ioctl_t(dev_t, u_long, void *, int, struct lwp *); +typedef void dev_stop_t(struct tty *, int); +typedef struct tty *dev_tty_t(dev_t); +typedef int dev_poll_t(dev_t, int, struct lwp *); +typedef paddr_t dev_mmap_t(dev_t, off_t, int); +typedef void dev_strategy_t(struct buf *); +typedef int dev_dump_t(dev_t, daddr_t, void *, size_t); +typedef int dev_size_t(dev_t); +typedef int dev_kqfilter_t(dev_t, struct knote *); +typedef int dev_discard_t(dev_t, off_t, off_t); + +#define dev_type_open(n) dev_open_t n +#define dev_type_cancel(n) dev_cancel_t n +#define dev_type_close(n) dev_close_t n +#define dev_type_read(n) dev_read_t n +#define dev_type_write(n) dev_write_t n +#define dev_type_ioctl(n) dev_ioctl_t n +#define dev_type_stop(n) dev_stop_t n +#define dev_type_tty(n) dev_tty_t n +#define dev_type_poll(n) dev_poll_t n +#define dev_type_mmap(n) dev_mmap_t n +#define dev_type_strategy(n) dev_strategy_t n +#define dev_type_dump(n) dev_dump_t n +#define dev_type_size(n) dev_size_t n +#define dev_type_kqfilter(n) dev_kqfilter_t n +#define dev_type_discard(n) dev_discard_t n int devenodev(dev_t, ...); int deveopnotsupp(dev_t, ...); @@ -140,30 +155,30 @@ 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 noopen ((dev_open_t *)devenodev) +#define noclose ((dev_close_t *)devenodev) +#define noread ((dev_read_t *)devenodev) +#define nowrite ((dev_write_t *)devenodev) +#define noioctl ((dev_ioctl_t *)devenodev) +#define nostop ((dev_stop_t *)ttyvenodev) #define notty NULL #define nopoll seltrue paddr_t nommap(dev_t, off_t, int); -#define nodump ((dev_type_dump((*)))devenodev) +#define nodump ((dev_dump_t *)devenodev) #define nosize NULL #define nokqfilter seltrue_kqfilter -#define nodiscard ((dev_type_discard((*)))devenodev) +#define nodiscard ((dev_discard_t *)devenodev) -#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) +#define nullopen ((dev_open_t *)devnullop) +#define nullclose ((dev_close_t *)devnullop) +#define nullread ((dev_read_t *)devnullop) +#define nullwrite ((dev_write_t *)devnullop) +#define nullioctl ((dev_ioctl_t *)devnullop) +#define nullstop ((dev_stop_t *)ttyvnullop) +#define nullpoll ((dev_poll_t *)devnullop) +#define nulldump ((dev_dump_t *)devnullop) +#define nullkqfilter ((dev_kqfilter_t *)deveopnotsupp) +#define nulldiscard ((dev_discard_t *)devnullop) /* device access wrappers. */ Index: src/sys/uvm/uvm_device.c diff -u src/sys/uvm/uvm_device.c:1.72 src/sys/uvm/uvm_device.c:1.73 --- src/sys/uvm/uvm_device.c:1.72 Sat Mar 13 15:29:55 2021 +++ src/sys/uvm/uvm_device.c Mon Mar 28 12:39:18 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_device.c,v 1.72 2021/03/13 15:29:55 skrll Exp $ */ +/* $NetBSD: uvm_device.c,v 1.73 2022/03/28 12:39:18 riastradh Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: uvm_device.c,v 1.72 2021/03/13 15:29:55 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uvm_device.c,v 1.73 2022/03/28 12:39:18 riastradh Exp $"); #include "opt_uvmhist.h" @@ -112,7 +112,7 @@ udv_attach(dev_t device, vm_prot_t acces { struct uvm_device *udv, *lcv; const struct cdevsw *cdev; - dev_type_mmap((*mapfn)); + dev_mmap_t *mapfn; UVMHIST_FUNC(__func__); UVMHIST_CALLARGS(maphist, "(device=%#jx)", device,0,0,0);