summaryrefslogtreecommitdiffstats
path: root/sys/fs/devfs
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2000-09-02 19:17:34 +0000
committerphk <phk@FreeBSD.org>2000-09-02 19:17:34 +0000
commite47f61e18396b6e5f61ee91b9f9f832976ee96cf (patch)
treebc17f23dc3fa3b9663516bac048049a5f02652ea /sys/fs/devfs
parent0ab175f21b9e105fcbe4db6569019e946f23e13c (diff)
downloadFreeBSD-src-e47f61e18396b6e5f61ee91b9f9f832976ee96cf.zip
FreeBSD-src-e47f61e18396b6e5f61ee91b9f9f832976ee96cf.tar.gz
Avoid the modules madness I inadvertently introduced by making the
cloning infrastructure standard in kern_conf. Modules are now the same with or without devfs support. If you need to detect if devfs is present, in modules or elsewhere, check the integer variable "devfs_present". This happily removes an ugly hack from kern/vfs_conf.c. This forces a rename of the eventhandler and the standard clone helper function. Include <sys/eventhandler.h> in <sys/conf.h>: it's a helper #include like <sys/queue.h> Remove all #includes of opt_devfs.h they no longer matter.
Diffstat (limited to 'sys/fs/devfs')
-rw-r--r--sys/fs/devfs/devfs.h5
-rw-r--r--sys/fs/devfs/devfs_devs.c28
-rw-r--r--sys/fs/devfs/devfs_vnops.c2
3 files changed, 4 insertions, 31 deletions
diff --git a/sys/fs/devfs/devfs.h b/sys/fs/devfs/devfs.h
index c959e53..b00a913 100644
--- a/sys/fs/devfs/devfs.h
+++ b/sys/fs/devfs/devfs.h
@@ -96,9 +96,4 @@ void devfs_purge __P((struct devfs_dirent *dd));
struct devfs_dirent * devfs_vmkdir __P((char *name, int namelen,
struct devfs_dirent *dotdot));
#endif /* DEVFS_INTERN */
-
-typedef void (*devfs_clone_fn) __P((void *arg, char *name, int namelen, dev_t *result));
-
-int devfs_stdclone __P((char *name, char **namep, char *stem, int *unit));
-EVENTHANDLER_DECLARE(devfs_clone, devfs_clone_fn);
#endif /* _KERNEL */
diff --git a/sys/fs/devfs/devfs_devs.c b/sys/fs/devfs/devfs_devs.c
index c3eb101..41a48c7 100644
--- a/sys/fs/devfs/devfs_devs.c
+++ b/sys/fs/devfs/devfs_devs.c
@@ -238,34 +238,12 @@ devfs_create(dev_t dev)
}
static void
-devfs_remove(dev_t dev)
+devfs_destroy(dev_t dev)
{
devfs_inot[dev->si_inode] = NULL;
devfs_generation++;
}
devfs_create_t *devfs_create_hook = devfs_create;
-devfs_remove_t *devfs_remove_hook = devfs_remove;
-
-int
-devfs_stdclone(char *name, char **namep, char *stem, int *unit)
-{
- int u, i;
-
- if (bcmp(stem, name, strlen(stem)) != 0)
- return (0);
- i = strlen(stem);
- if (!isdigit(name[i]))
- return (0);
- u = 0;
- while (isdigit(name[i])) {
- u *= 10;
- u += name[i++] - '0';
- }
- *unit = u;
- if (namep)
- *namep = &name[i];
- if (name[i])
- return (2);
- return (1);
-}
+devfs_destroy_t *devfs_destroy_hook = devfs_destroy;
+int devfs_present = 1;
diff --git a/sys/fs/devfs/devfs_vnops.c b/sys/fs/devfs/devfs_vnops.c
index 0c81ded..e96dafb 100644
--- a/sys/fs/devfs/devfs_vnops.c
+++ b/sys/fs/devfs/devfs_vnops.c
@@ -300,7 +300,7 @@ devfs_lookup(ap)
printf("Finished specname: %d \"%s\"\n", i, specname + i);
#endif
cdev = NODEV;
- EVENTHANDLER_INVOKE(devfs_clone, specname + i,
+ EVENTHANDLER_INVOKE(dev_clone, specname + i,
strlen(specname + i), &cdev);
#if 0
printf("cloned %s -> %p %s\n", specname + i, cdev,
OpenPOWER on IntegriCloud