media: v4l2-core: add v4l2_debugfs_root()

This new function returns the dentry of the top-level debugfs "v4l2"
directory. If it does not exist yet, then it is created first.

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
Hans Verkuil 2024-08-28 16:24:07 +02:00 committed by Mauro Carvalho Chehab
parent bfe703ac0c
commit ccb32f2357
2 changed files with 29 additions and 0 deletions

View File

@ -93,6 +93,8 @@ static struct attribute *video_device_attrs[] = {
};
ATTRIBUTE_GROUPS(video_device);
static struct dentry *v4l2_debugfs_root_dir;
/*
* Active devices
*/
@ -1118,6 +1120,16 @@ void video_unregister_device(struct video_device *vdev)
}
EXPORT_SYMBOL(video_unregister_device);
#ifdef CONFIG_DEBUG_FS
struct dentry *v4l2_debugfs_root(void)
{
if (!v4l2_debugfs_root_dir)
v4l2_debugfs_root_dir = debugfs_create_dir("v4l2", NULL);
return v4l2_debugfs_root_dir;
}
EXPORT_SYMBOL_GPL(v4l2_debugfs_root);
#endif
#if defined(CONFIG_MEDIA_CONTROLLER)
__must_check int video_device_pipeline_start(struct video_device *vdev,
@ -1222,6 +1234,8 @@ static void __exit videodev_exit(void)
class_unregister(&video_class);
unregister_chrdev_region(dev, VIDEO_NUM_DEVICES);
debugfs_remove_recursive(v4l2_debugfs_root_dir);
v4l2_debugfs_root_dir = NULL;
}
subsys_initcall(videodev_init);

View File

@ -62,6 +62,7 @@ struct v4l2_ioctl_callbacks;
struct video_device;
struct v4l2_device;
struct v4l2_ctrl_handler;
struct dentry;
/**
* enum v4l2_video_device_flags - Flags used by &struct video_device
@ -539,6 +540,20 @@ static inline int video_is_registered(struct video_device *vdev)
return test_bit(V4L2_FL_REGISTERED, &vdev->flags);
}
/**
* v4l2_debugfs_root - returns the dentry of the top-level "v4l2" debugfs dir
*
* If this directory does not yet exist, then it will be created.
*/
#ifdef CONFIG_DEBUG_FS
struct dentry *v4l2_debugfs_root(void);
#else
static inline struct dentry *v4l2_debugfs_root(void)
{
return NULL;
}
#endif
#if defined(CONFIG_MEDIA_CONTROLLER)
/**