summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_lkm.c
diff options
context:
space:
mode:
authormpp <mpp@FreeBSD.org>1997-02-22 01:20:57 +0000
committermpp <mpp@FreeBSD.org>1997-02-22 01:20:57 +0000
commit67fb7190df2a9136ecaa682b96cc96ba022ce05d (patch)
treea68f1b471f4cf49380b46f5443b300ddc309e5d0 /sys/kern/kern_lkm.c
parent83182e50d03c416fde808ba43b3a3c42291f3e1e (diff)
downloadFreeBSD-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/kern_lkm.c')
-rw-r--r--sys/kern/kern_lkm.c11
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;
OpenPOWER on IntegriCloud