summaryrefslogtreecommitdiff
path: root/sys/miscfs/devfs
diff options
context:
space:
mode:
authorJulian Elischer <julian@FreeBSD.org>1995-12-08 11:19:42 +0000
committerJulian Elischer <julian@FreeBSD.org>1995-12-08 11:19:42 +0000
commit87f6c6625d5a4889540cb77c8296e456b7d1390b (patch)
tree5150d199464d64c1021f91b2c2f112d48546a8bf /sys/miscfs/devfs
parent0b7a315970685222e8ccbcdf3d645d35650cd03e (diff)
Notes
Diffstat (limited to 'sys/miscfs/devfs')
-rw-r--r--sys/miscfs/devfs/devfs_tree.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/sys/miscfs/devfs/devfs_tree.c b/sys/miscfs/devfs/devfs_tree.c
index 0110f8b90056..6f3232249146 100644
--- a/sys/miscfs/devfs/devfs_tree.c
+++ b/sys/miscfs/devfs/devfs_tree.c
@@ -2,7 +2,7 @@
/*
* Written by Julian Elischer (julian@DIALix.oz.au)
*
- * $Header: /home/ncvs/src/sys/miscfs/devfs/devfs_tree.c,v 1.8 1995/10/10 07:12:25 julian Exp $
+ * $Header: /home/ncvs/src/sys/miscfs/devfs/devfs_tree.c,v 1.9 1995/11/29 10:48:36 julian Exp $
*/
#include "param.h"
@@ -908,15 +908,18 @@ int dev_add_entry(char *name, dn_p parent, int type, union typeinfo *by, devnm_p
\***********************************************************************/
void *devfs_add_devsw(char *path,
char *name,
- int major,
+ void *devsw,
int minor,
int chrblk,
uid_t uid,
gid_t gid,
int perms)
{
+ int major;
devnm_p new_dev;
dn_p dnp; /* devnode for parent directory */
+ struct cdevsw *cd;
+ struct bdevsw *bd;
int retval;
union typeinfo by;
@@ -926,13 +929,19 @@ void *devfs_add_devsw(char *path,
switch(chrblk)
{
case DV_CHR:
- by.Cdev.cdevsw = cdevsw + major;
+ cd = devsw;
+ major = cd->d_maj;
+ if ( major == -1 ) return NULL;
+ by.Cdev.cdevsw = cd;
by.Cdev.dev = makedev(major, minor);
if( dev_add_entry(name, dnp, DEV_CDEV, &by,&new_dev))
return NULL;
break;
case DV_BLK:
- by.Bdev.bdevsw = bdevsw + major;
+ bd = devsw;
+ major = bd->d_maj;
+ if ( major == -1 ) return NULL;
+ by.Bdev.bdevsw = bd;
by.Bdev.dev = makedev(major, minor);
if( dev_add_entry(name, dnp, DEV_BDEV, &by, &new_dev))
return NULL;