diff options
author | Ian Moffett <ian@osmora.org> | 2024-04-18 14:36:41 -0400 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2024-04-18 14:36:41 -0400 |
commit | 691302ee1f22a5458c4dab3d5f85cc3de9332bb5 (patch) | |
tree | 34171f0c5c27d005b6718a5c8a383782a7b39de7 /sys/fs/devfs.c | |
parent | b0c1b65926d66482099e958e6218e8890531e47f (diff) |
kernel: devfs: Add devfs_get_dev()
Add helper to get a device descriptor from a vnode
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'sys/fs/devfs.c')
-rw-r--r-- | sys/fs/devfs.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/sys/fs/devfs.c b/sys/fs/devfs.c index 7e7fd9d..8b273db 100644 --- a/sys/fs/devfs.c +++ b/sys/fs/devfs.c @@ -199,6 +199,29 @@ devfs_add_dev(const char *name, const struct device *dev) return 0; } +/* + * Fetch a device descriptor from a vnode. + */ +int +devfs_get_dev(struct vnode *vp, struct device **res) +{ + struct device_node *n; + struct device *dev; + + /* Is this really a device? */ + if (vp->type != VBLK && vp->type != VCHR) { + return -ENODEV; + } + + n = vp->data; + if ((dev = device_fetch(n->major, n->minor)) == NULL) { + return -ENODEV; + } + + *res = dev; + return 0; +} + struct vfsops g_devfs_ops = { .init = devfs_init }; |