diff options
author | mpp <mpp@FreeBSD.org> | 1997-02-22 01:20:57 +0000 |
---|---|---|
committer | mpp <mpp@FreeBSD.org> | 1997-02-22 01:20:57 +0000 |
commit | 67fb7190df2a9136ecaa682b96cc96ba022ce05d (patch) | |
tree | a68f1b471f4cf49380b46f5443b300ddc309e5d0 /sys/kern | |
parent | 83182e50d03c416fde808ba43b3a3c42291f3e1e (diff) | |
download | FreeBSD-src-67fb7190df2a9136ecaa682b96cc96ba022ce05d.zip FreeBSD-src-67fb7190df2a9136ecaa682b96cc96ba022ce05d.tar.gz |
Support the installation of character devices via an lkm.
Closes PR# 1716
Submitted by: jpt@magic.net
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/kern_lkm.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/sys/kern/kern_lkm.c b/sys/kern/kern_lkm.c index 33c5ef3..b42d608 100644 --- a/sys/kern/kern_lkm.c +++ b/sys/kern/kern_lkm.c @@ -741,6 +741,15 @@ _lkm_dev(lkmtp, cmd) break; case LM_DT_CHAR: + if ((i = args->lkm_offset) == -1) + descrip = (dev_t) -1; + else + descrip = makedev(args->lkm_offset,0); + if ( err = cdevsw_add(&descrip, args->lkm_dev.cdev, + &(args->lkm_olddev.cdev))) { + break; + } + args->lkm_offset = major(descrip) ; break; default: @@ -752,11 +761,11 @@ _lkm_dev(lkmtp, cmd) case LKM_E_UNLOAD: /* current slot... */ i = args->lkm_offset; + descrip = makedev(i,0); switch(args->lkm_devtype) { case LM_DT_BLOCK: /* replace current slot contents with old contents */ - descrip = makedev(i,0); bdevsw_add(&descrip, args->lkm_olddev.bdev,NULL); break; |