From 507c8709748944c310d7a558ec0e27130fadb6f4 Mon Sep 17 00:00:00 2001 From: phk Date: Tue, 23 Jul 1996 21:52:43 +0000 Subject: Make a "DWIM" function for adding [bc]devsw entries for bdev drivers. Saves about 280 butes of source per driver, 56 bytes in object size and another 56 bytes moves from data to bss. No functional change intended nor expected. GENERIC should be about one k smaller now :-) --- sys/kern/kern_conf.c | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'sys/kern') diff --git a/sys/kern/kern_conf.c b/sys/kern/kern_conf.c index 2f6dad1..b403dbf 100644 --- a/sys/kern/kern_conf.c +++ b/sys/kern/kern_conf.c @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: kern_conf.c,v 1.8 1995/12/21 20:09:39 julian Exp $ + * $Id: kern_conf.c,v 1.9 1995/12/22 15:56:33 phk Exp $ */ #include @@ -157,3 +157,37 @@ int TTYPE##_add(dev_t *descrip, \ ADDENTRY(bdevsw, nblkdev) ADDENTRY(cdevsw, nchrdev) + +void +cdevsw_make(struct bdevsw *from) +{ + struct cdevsw *to = from->d_cdev; + + if (!to) + panic("No target cdevsw in bdevsw"); + to->d_open = from->d_open; + to->d_close = from->d_close; + to->d_read = rawread; + to->d_write = rawwrite; + to->d_ioctl = from->d_ioctl; + to->d_stop = nostop; + to->d_reset = nullreset; + to->d_devtotty = nodevtotty; + to->d_select = seltrue; + to->d_mmap = nommap; + to->d_strategy = from->d_strategy; + to->d_name = from->d_name; + to->d_bdev = from; + to->d_maj = -1; +} + +void +bdevsw_add_generic(int bdev, int cdev, struct bdevsw *bdevsw) +{ + dev_t dev; + cdevsw_make(bdevsw); + dev = makedev(cdev, 0); + cdevsw_add(&dev, bdevsw->d_cdev, NULL); + dev = makedev(bdev, 0); + bdevsw_add(&dev, bdevsw , NULL); +} -- cgit v1.1