diff options
author | Inaky Perez-Gonzalez <inaky@linux.intel.com> | 2008-12-20 19:57:39 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-01-07 13:00:16 -0500 |
commit | 5e07878787ad07361571150230cc3a8d522ae046 (patch) | |
tree | 5ad18b64184d84bf15d281ac1b5504aa399f295e /fs | |
parent | 34c65d82e02147331701c7795e3144d511adf4e9 (diff) |
debugfs: add helpers for exporting a size_t simple value
In the same spirit as debugfs_create_*(), introduce helpers for
exporting size_t values over debugfs.
The only trick done is that the format verifier is kept at %llu
instead of %zu; otherwise type warnings would pop up:
format ‘%zu’ expects type ‘size_t’, but argument 2 has type ‘long long unsigned int’
There is no real way to fix this one--however, we can consider %llu
and %zu to be compatible if we consider that we are using the same for
validating in debugfs_create_{x,u}{8,16,32}().
Signed-off-by: Inaky Perez-Gonzalez <inaky@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/debugfs/file.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/fs/debugfs/file.c b/fs/debugfs/file.c index 159a5efd6a8a..33a90120f6ad 100644 --- a/fs/debugfs/file.c +++ b/fs/debugfs/file.c | |||
@@ -294,6 +294,38 @@ struct dentry *debugfs_create_x32(const char *name, mode_t mode, | |||
294 | } | 294 | } |
295 | EXPORT_SYMBOL_GPL(debugfs_create_x32); | 295 | EXPORT_SYMBOL_GPL(debugfs_create_x32); |
296 | 296 | ||
297 | |||
298 | static int debugfs_size_t_set(void *data, u64 val) | ||
299 | { | ||
300 | *(size_t *)data = val; | ||
301 | return 0; | ||
302 | } | ||
303 | static int debugfs_size_t_get(void *data, u64 *val) | ||
304 | { | ||
305 | *val = *(size_t *)data; | ||
306 | return 0; | ||
307 | } | ||
308 | DEFINE_SIMPLE_ATTRIBUTE(fops_size_t, debugfs_size_t_get, debugfs_size_t_set, | ||
309 | "%llu\n"); /* %llu and %zu are more or less the same */ | ||
310 | |||
311 | /** | ||
312 | * debugfs_create_size_t - create a debugfs file that is used to read and write an size_t value | ||
313 | * @name: a pointer to a string containing the name of the file to create. | ||
314 | * @mode: the permission that the file should have | ||
315 | * @parent: a pointer to the parent dentry for this file. This should be a | ||
316 | * directory dentry if set. If this parameter is %NULL, then the | ||
317 | * file will be created in the root of the debugfs filesystem. | ||
318 | * @value: a pointer to the variable that the file should read to and write | ||
319 | * from. | ||
320 | */ | ||
321 | struct dentry *debugfs_create_size_t(const char *name, mode_t mode, | ||
322 | struct dentry *parent, size_t *value) | ||
323 | { | ||
324 | return debugfs_create_file(name, mode, parent, value, &fops_size_t); | ||
325 | } | ||
326 | EXPORT_SYMBOL_GPL(debugfs_create_size_t); | ||
327 | |||
328 | |||
297 | static ssize_t read_file_bool(struct file *file, char __user *user_buf, | 329 | static ssize_t read_file_bool(struct file *file, char __user *user_buf, |
298 | size_t count, loff_t *ppos) | 330 | size_t count, loff_t *ppos) |
299 | { | 331 | { |