diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-02-07 12:47:23 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-02-07 12:47:23 -0800 |
commit | cc006a2241122768be62cdcc09d3fd2540308d48 (patch) | |
tree | f206279e3bba5677a658c80c5dde0801d1de285a /include | |
parent | 7590e37bdaeec25ae325f4ba450be13e2aac6c8d (diff) | |
parent | 9a7c551ba7aae3648473179f234e960cfd46eaf4 (diff) | |
download | linux-cc006a2241122768be62cdcc09d3fd2540308d48.tar.bz2 |
Merge tag 'platform-drivers-x86-v4.16-2' of git://git.infradead.org/linux-platform-drivers-x86
Pull more x86 platform-drivers updates from Andy Shevchenko:
"The DEFINE_SHOW_ATTRIBUTE() macro was defined privately in three
locations and is useful for new and old users to avoid a lot of code
duplication.
Move the macro to seq_file.h.
Along with above, clean up three drivers to use that macro.
This, due to dependencies, was sent separately since affected changes
weren't upstream originally yet. The rationale of doing this now is to
allow use of new macro in v4.17 cycle in a conflictless manner"
* tag 'platform-drivers-x86-v4.16-2' of git://git.infradead.org/linux-platform-drivers-x86:
platform/x86: samsung-laptop: Re-use DEFINE_SHOW_ATTRIBUTE() macro
platform/x86: ideapad-laptop: Re-use DEFINE_SHOW_ATTRIBUTE() macro
platform/x86: dell-laptop: Re-use DEFINE_SHOW_ATTRIBUTE() macro
seq_file: Introduce DEFINE_SHOW_ATTRIBUTE() helper macro
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/seq_file.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/include/linux/seq_file.h b/include/linux/seq_file.h index 09c6e28746f9..ab437dd2e3b9 100644 --- a/include/linux/seq_file.h +++ b/include/linux/seq_file.h @@ -140,6 +140,20 @@ void *__seq_open_private(struct file *, const struct seq_operations *, int); int seq_open_private(struct file *, const struct seq_operations *, int); int seq_release_private(struct inode *, struct file *); +#define DEFINE_SHOW_ATTRIBUTE(__name) \ +static int __name ## _open(struct inode *inode, struct file *file) \ +{ \ + return single_open(file, __name ## _show, inode->i_private); \ +} \ + \ +static const struct file_operations __name ## _fops = { \ + .owner = THIS_MODULE, \ + .open = __name ## _open, \ + .read = seq_read, \ + .llseek = seq_lseek, \ + .release = single_release, \ +} + static inline struct user_namespace *seq_user_ns(struct seq_file *seq) { #ifdef CONFIG_USER_NS |