|
@@ -248,6 +248,42 @@ static struct file_system_type debug_fs_type = {
|
|
|
};
|
|
|
MODULE_ALIAS_FS("debugfs");
|
|
|
|
|
|
+/**
|
|
|
+ * debugfs_lookup() - look up an existing debugfs file
|
|
|
+ * @name: a pointer to a string containing the name of the file to look up.
|
|
|
+ * @parent: a pointer to the parent dentry of the file.
|
|
|
+ *
|
|
|
+ * This function will return a pointer to a dentry if it succeeds. If the file
|
|
|
+ * doesn't exist or an error occurs, %NULL will be returned. The returned
|
|
|
+ * dentry must be passed to dput() when it is no longer needed.
|
|
|
+ *
|
|
|
+ * If debugfs is not enabled in the kernel, the value -%ENODEV will be
|
|
|
+ * returned.
|
|
|
+ */
|
|
|
+struct dentry *debugfs_lookup(const char *name, struct dentry *parent)
|
|
|
+{
|
|
|
+ struct dentry *dentry;
|
|
|
+
|
|
|
+ if (IS_ERR(parent))
|
|
|
+ return NULL;
|
|
|
+
|
|
|
+ if (!parent)
|
|
|
+ parent = debugfs_mount->mnt_root;
|
|
|
+
|
|
|
+ inode_lock(d_inode(parent));
|
|
|
+ dentry = lookup_one_len(name, parent, strlen(name));
|
|
|
+ inode_unlock(d_inode(parent));
|
|
|
+
|
|
|
+ if (IS_ERR(dentry))
|
|
|
+ return NULL;
|
|
|
+ if (!d_really_is_positive(dentry)) {
|
|
|
+ dput(dentry);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+ return dentry;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(debugfs_lookup);
|
|
|
+
|
|
|
static struct dentry *start_creating(const char *name, struct dentry *parent)
|
|
|
{
|
|
|
struct dentry *dentry;
|