Commit a08f06bb authored by Andy Shevchenko's avatar Andy Shevchenko

seq_file: Introduce DEFINE_SHOW_ATTRIBUTE() helper macro

The DEFINE_SHOW_ATTRIBUTE() helper macro would be useful for current
users, which are many of them, and for new comers to decrease code
duplication.
Acked-by: default avatarLee Jones <lee.jones@linaro.org>
Acked-by: default avatarDarren Hart (VMware) <dvhart@infradead.org>
Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
parent a2e5790d
...@@ -1258,20 +1258,6 @@ static struct ab8500_prcmu_ranges ab8540_debug_ranges[AB8500_NUM_BANKS] = { ...@@ -1258,20 +1258,6 @@ static struct ab8500_prcmu_ranges ab8540_debug_ranges[AB8500_NUM_BANKS] = {
}, },
}; };
#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 irqreturn_t ab8500_debug_handler(int irq, void *data) static irqreturn_t ab8500_debug_handler(int irq, void *data)
{ {
char buf[16]; char buf[16];
......
...@@ -208,20 +208,6 @@ static const struct pmc_data cht_data = { ...@@ -208,20 +208,6 @@ static const struct pmc_data cht_data = {
.clks = cht_clks, .clks = cht_clks,
}; };
#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 u32 pmc_reg_read(struct pmc_dev *pmc, int reg_offset) static inline u32 pmc_reg_read(struct pmc_dev *pmc, int reg_offset)
{ {
return readl(pmc->regmap + reg_offset); return readl(pmc->regmap + reg_offset);
......
...@@ -140,6 +140,20 @@ void *__seq_open_private(struct file *, const struct seq_operations *, int); ...@@ -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_open_private(struct file *, const struct seq_operations *, int);
int seq_release_private(struct inode *, struct file *); 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) static inline struct user_namespace *seq_user_ns(struct seq_file *seq)
{ {
#ifdef CONFIG_USER_NS #ifdef CONFIG_USER_NS
......
...@@ -90,19 +90,6 @@ static int __name ## _show(struct seq_file *f, void *ptr) \ ...@@ -90,19 +90,6 @@ static int __name ## _show(struct seq_file *f, void *ptr) \
\ \
DEFINE_SHOW_ATTRIBUTE(__name) DEFINE_SHOW_ATTRIBUTE(__name)
#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 = { \
.open = __name ## _open, \
.read = seq_read, \
.llseek = seq_lseek, \
.release = single_release, \
} \
static int features_show(struct seq_file *f, void *ptr) static int features_show(struct seq_file *f, void *ptr)
{ {
struct hci_dev *hdev = f->private; struct hci_dev *hdev = f->private;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment