summaryrefslogtreecommitdiffstats
path: root/fs/devfs-core.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/devfs-core.c')
-rw-r--r--fs/devfs-core.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/fs/devfs-core.c b/fs/devfs-core.c
index 519e18e6b7..9bc3126d6b 100644
--- a/fs/devfs-core.c
+++ b/fs/devfs-core.c
@@ -40,6 +40,20 @@ struct cdev *cdev_by_name(const char *filename)
return NULL;
}
+int cdev_find_free_index(const char *basename)
+{
+ int i;
+ char fname[100];
+
+ for (i = 0; i < 1000; i++) {
+ snprintf(fname, sizeof(fname), "%s%d", basename, i);
+ if (cdev_by_name(fname) == NULL)
+ return i;
+ }
+
+ return -EBUSY; /* all indexes are used */
+}
+
struct cdev *cdev_open(const char *name, unsigned long flags)
{
struct cdev *cdev = cdev_by_name(name);