diff options
author | phk <phk@FreeBSD.org> | 2000-09-02 19:17:34 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2000-09-02 19:17:34 +0000 |
commit | e47f61e18396b6e5f61ee91b9f9f832976ee96cf (patch) | |
tree | bc17f23dc3fa3b9663516bac048049a5f02652ea /sys/fs/devfs | |
parent | 0ab175f21b9e105fcbe4db6569019e946f23e13c (diff) | |
download | FreeBSD-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.h | 5 | ||||
-rw-r--r-- | sys/fs/devfs/devfs_devs.c | 28 | ||||
-rw-r--r-- | sys/fs/devfs/devfs_vnops.c | 2 |
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, |