aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Fitzgerald <rf@opensource.wolfsonmicro.com>2015-06-23 09:32:54 -0400
committerMark Brown <broonie@kernel.org>2015-07-20 13:44:50 -0400
commit0642ef6f2992eba46c41abb5ceb7d4fa14ba888e (patch)
treefd4fe479afa4f75a2b599ef3f450d9fee5b7ff6e
parentbc0195aad0daa2ad5b0d76cce22b167bc3435590 (diff)
debugfs: Export bool read/write functions
The file read/write functions for bools have no special dependencies on debugfs internals and are sufficiently non-trivial to be worth exporting so clients can re-use the implementation. Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r--fs/debugfs/file.c14
-rw-r--r--include/linux/debugfs.h20
2 files changed, 28 insertions, 6 deletions
diff --git a/fs/debugfs/file.c b/fs/debugfs/file.c
index 284f9aa0028b..6c55ade071c3 100644
--- a/fs/debugfs/file.c
+++ b/fs/debugfs/file.c
@@ -435,8 +435,8 @@ struct dentry *debugfs_create_atomic_t(const char *name, umode_t mode,
435} 435}
436EXPORT_SYMBOL_GPL(debugfs_create_atomic_t); 436EXPORT_SYMBOL_GPL(debugfs_create_atomic_t);
437 437
438static ssize_t read_file_bool(struct file *file, char __user *user_buf, 438ssize_t debugfs_read_file_bool(struct file *file, char __user *user_buf,
439 size_t count, loff_t *ppos) 439 size_t count, loff_t *ppos)
440{ 440{
441 char buf[3]; 441 char buf[3];
442 u32 *val = file->private_data; 442 u32 *val = file->private_data;
@@ -449,9 +449,10 @@ static ssize_t read_file_bool(struct file *file, char __user *user_buf,
449 buf[2] = 0x00; 449 buf[2] = 0x00;
450 return simple_read_from_buffer(user_buf, count, ppos, buf, 2); 450 return simple_read_from_buffer(user_buf, count, ppos, buf, 2);
451} 451}
452EXPORT_SYMBOL_GPL(debugfs_read_file_bool);
452 453
453static ssize_t write_file_bool(struct file *file, const char __user *user_buf, 454ssize_t debugfs_write_file_bool(struct file *file, const char __user *user_buf,
454 size_t count, loff_t *ppos) 455 size_t count, loff_t *ppos)
455{ 456{
456 char buf[32]; 457 char buf[32];
457 size_t buf_size; 458 size_t buf_size;
@@ -468,10 +469,11 @@ static ssize_t write_file_bool(struct file *file, const char __user *user_buf,
468 469
469 return count; 470 return count;
470} 471}
472EXPORT_SYMBOL_GPL(debugfs_write_file_bool);
471 473
472static const struct file_operations fops_bool = { 474static const struct file_operations fops_bool = {
473 .read = read_file_bool, 475 .read = debugfs_read_file_bool,
474 .write = write_file_bool, 476 .write = debugfs_write_file_bool,
475 .open = simple_open, 477 .open = simple_open,
476 .llseek = default_llseek, 478 .llseek = default_llseek,
477}; 479};
diff --git a/include/linux/debugfs.h b/include/linux/debugfs.h
index 420311bcee38..9beb636b97eb 100644
--- a/include/linux/debugfs.h
+++ b/include/linux/debugfs.h
@@ -116,6 +116,12 @@ struct dentry *debugfs_create_devm_seqfile(struct device *dev, const char *name,
116 116
117bool debugfs_initialized(void); 117bool debugfs_initialized(void);
118 118
119ssize_t debugfs_read_file_bool(struct file *file, char __user *user_buf,
120 size_t count, loff_t *ppos);
121
122ssize_t debugfs_write_file_bool(struct file *file, const char __user *user_buf,
123 size_t count, loff_t *ppos);
124
119#else 125#else
120 126
121#include <linux/err.h> 127#include <linux/err.h>
@@ -282,6 +288,20 @@ static inline struct dentry *debugfs_create_devm_seqfile(struct device *dev,
282 return ERR_PTR(-ENODEV); 288 return ERR_PTR(-ENODEV);
283} 289}
284 290
291static inline ssize_t debugfs_read_file_bool(struct file *file,
292 char __user *user_buf,
293 size_t count, loff_t *ppos)
294{
295 return -ENODEV;
296}
297
298static inline ssize_t debugfs_write_file_bool(struct file *file,
299 const char __user *user_buf,
300 size_t count, loff_t *ppos)
301{
302 return -ENODEV;
303}
304
285#endif 305#endif
286 306
287#endif 307#endif