summaryrefslogtreecommitdiffstats
path: root/sys/fs
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2011-10-05 16:50:15 +0000
committerkib <kib@FreeBSD.org>2011-10-05 16:50:15 +0000
commit12b63c734fff294408d34cb8d31a23f2fd8e1967 (patch)
treec3d5d7ba91f0cc066799fbd0d14598f39626d738 /sys/fs
parentd9f932fe21c5bbfac0e824f26de1265d4f60f020 (diff)
downloadFreeBSD-src-12b63c734fff294408d34cb8d31a23f2fd8e1967.zip
FreeBSD-src-12b63c734fff294408d34cb8d31a23f2fd8e1967.tar.gz
Export devfs inode number allocator for the kernel consumers.
Reviewed by: jhb MFC after: 2 weeks
Diffstat (limited to 'sys/fs')
-rw-r--r--sys/fs/devfs/devfs_devs.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/sys/fs/devfs/devfs_devs.c b/sys/fs/devfs/devfs_devs.c
index a2d3222..a111527 100644
--- a/sys/fs/devfs/devfs_devs.c
+++ b/sys/fs/devfs/devfs_devs.c
@@ -171,8 +171,7 @@ devfs_free(struct cdev *cdev)
cdp = cdev2priv(cdev);
if (cdev->si_cred != NULL)
crfree(cdev->si_cred);
- if (cdp->cdp_inode > 0)
- free_unr(devfs_inos, cdp->cdp_inode);
+ devfs_free_cdp_inode(cdp->cdp_inode);
if (cdp->cdp_maxdirent > 0)
free(cdp->cdp_dirents, M_DEVFS2);
free(cdp, M_CDEVP);
@@ -394,7 +393,7 @@ devfs_delete(struct devfs_mount *dm, struct devfs_dirent *de, int flags)
mac_devfs_destroy(de);
#endif
if (de->de_inode > DEVFS_ROOTINO) {
- free_unr(devfs_inos, de->de_inode);
+ devfs_free_cdp_inode(de->de_inode);
de->de_inode = 0;
}
if (DEVFS_DE_DROP(de))
@@ -685,6 +684,21 @@ devfs_destroy(struct cdev *dev)
devfs_generation++;
}
+ino_t
+devfs_alloc_cdp_inode(void)
+{
+
+ return (alloc_unr(devfs_inos));
+}
+
+void
+devfs_free_cdp_inode(ino_t ino)
+{
+
+ if (ino > 0)
+ free_unr(devfs_inos, ino);
+}
+
static void
devfs_devs_init(void *junk __unused)
{
OpenPOWER on IntegriCloud