summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2013-07-10 08:48:00 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2013-07-15 11:16:09 +0200
commit2672c906a4b83cd2aef1ddc0b9d2ec54b89eba3d (patch)
tree7fd4370608aac33a39bfa07069eb1d985381193c /fs
parentbec70b3aaa1a750d32ac8c5299fb434454a87f07 (diff)
downloadbarebox-2672c906a4b83cd2aef1ddc0b9d2ec54b89eba3d.tar.gz
barebox-2672c906a4b83cd2aef1ddc0b9d2ec54b89eba3d.tar.xz
cdev: allow to open a struct cdev
cdev_open() opens a cdev by name. This introduces cdev_do_open which allows to open a cdev when the cdev is already found by other means. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'fs')
-rw-r--r--fs/devfs-core.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/fs/devfs-core.c b/fs/devfs-core.c
index a2bea93ed6..816f244f1c 100644
--- a/fs/devfs-core.c
+++ b/fs/devfs-core.c
@@ -70,6 +70,14 @@ int cdev_find_free_index(const char *basename)
return -EBUSY; /* all indexes are used */
}
+int cdev_do_open(struct cdev *cdev, unsigned long flags)
+{
+ if (cdev->ops->open)
+ return cdev->ops->open(cdev, flags);
+
+ return 0;
+}
+
struct cdev *cdev_open(const char *name, unsigned long flags)
{
struct cdev *cdev = cdev_by_name(name);
@@ -78,11 +86,9 @@ struct cdev *cdev_open(const char *name, unsigned long flags)
if (!cdev)
return NULL;
- if (cdev->ops->open) {
- ret = cdev->ops->open(cdev, flags);
- if (ret)
- return NULL;
- }
+ ret = cdev_do_open(cdev, flags);
+ if (ret)
+ return NULL;
return cdev;
}