diff options
author | Borislav Petkov <bp@suse.de> | 2015-09-22 06:16:05 -0400 |
---|---|---|
committer | Borislav Petkov <bp@suse.de> | 2015-09-22 12:10:22 -0400 |
commit | 4397bcb4fa1dd285a2c6d583d1f1cbc6bd423f97 (patch) | |
tree | d215da1571321864e4fcb082c1d28820a1bc8dd9 /drivers/edac/debugfs.c | |
parent | 7ac8bf9bc9ba82aea763ef30671a34c6a2a39922 (diff) |
EDAC: Add debugfs wrappers
Later patches will convert EDAC users to those.
Signed-off-by: Borislav Petkov <bp@suse.de>
Diffstat (limited to 'drivers/edac/debugfs.c')
-rw-r--r-- | drivers/edac/debugfs.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/drivers/edac/debugfs.c b/drivers/edac/debugfs.c index bcd558d5cb48..4864703115cc 100644 --- a/drivers/edac/debugfs.c +++ b/drivers/edac/debugfs.c | |||
@@ -101,3 +101,63 @@ nomem: | |||
101 | debugfs_remove(mci->debugfs); | 101 | debugfs_remove(mci->debugfs); |
102 | return -ENOMEM; | 102 | return -ENOMEM; |
103 | } | 103 | } |
104 | |||
105 | /* Create a toplevel dir under EDAC's debugfs hierarchy */ | ||
106 | struct dentry *edac_debugfs_create_dir(const char *dirname) | ||
107 | { | ||
108 | if (!edac_debugfs) | ||
109 | return NULL; | ||
110 | |||
111 | return debugfs_create_dir(dirname, edac_debugfs); | ||
112 | } | ||
113 | EXPORT_SYMBOL_GPL(edac_debugfs_create_dir); | ||
114 | |||
115 | /* Create a toplevel dir under EDAC's debugfs hierarchy with parent @parent */ | ||
116 | struct dentry * | ||
117 | edac_debugfs_create_dir_at(const char *dirname, struct dentry *parent) | ||
118 | { | ||
119 | return debugfs_create_dir(dirname, parent); | ||
120 | } | ||
121 | EXPORT_SYMBOL_GPL(edac_debugfs_create_dir_at); | ||
122 | |||
123 | /* | ||
124 | * Create a file under EDAC's hierarchy or a sub-hierarchy: | ||
125 | * | ||
126 | * @name: file name | ||
127 | * @mode: file permissions | ||
128 | * @parent: parent dentry. If NULL, it becomes the toplevel EDAC dir | ||
129 | * @data: private data of caller | ||
130 | * @fops: file operations of this file | ||
131 | */ | ||
132 | struct dentry * | ||
133 | edac_debugfs_create_file(const char *name, umode_t mode, struct dentry *parent, | ||
134 | void *data, const struct file_operations *fops) | ||
135 | { | ||
136 | if (!parent) | ||
137 | parent = edac_debugfs; | ||
138 | |||
139 | return debugfs_create_file(name, mode, parent, data, fops); | ||
140 | } | ||
141 | EXPORT_SYMBOL_GPL(edac_debugfs_create_file); | ||
142 | |||
143 | /* Wrapper for debugfs_create_x8() */ | ||
144 | struct dentry *edac_debugfs_create_x8(const char *name, umode_t mode, | ||
145 | struct dentry *parent, u8 *value) | ||
146 | { | ||
147 | if (!parent) | ||
148 | parent = edac_debugfs; | ||
149 | |||
150 | return debugfs_create_x8(name, mode, parent, value); | ||
151 | } | ||
152 | EXPORT_SYMBOL_GPL(edac_debugfs_create_x8); | ||
153 | |||
154 | /* Wrapper for debugfs_create_x16() */ | ||
155 | struct dentry *edac_debugfs_create_x16(const char *name, umode_t mode, | ||
156 | struct dentry *parent, u16 *value) | ||
157 | { | ||
158 | if (!parent) | ||
159 | parent = edac_debugfs; | ||
160 | |||
161 | return debugfs_create_x16(name, mode, parent, value); | ||
162 | } | ||
163 | EXPORT_SYMBOL_GPL(edac_debugfs_create_x16); | ||