remove dev_attrs usage in 'struct class'
Subsystems (30)
Greg Kroah-Hartman
maintainercover remove dev_attrs usage in 'struct class'
Hi all,
Here are a bunch of patches working to convert drivers to use the dev_groups field in classes instead of using the dev_attrs field, which will be going away soon, as we really only want to support groups in the future, not multiple ways of creating default attributes.
They are all CC:ed the various driver authors, and can go in through their trees, or through mine, which ever is easier.
thanks,
greg k-h
Greg Kroah-Hartman
maintainerPATCH 1/36 misc: c2port: use dev_bin_attrs instead of hand-coding it
Classes support a list of default binary attributes, so use that in the c2port driver, instead of hand creating and destroying the file, which is racing with userspace. Bonus is this removes lines of code.
--- drivers/misc/c2port/core.c | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-)
drivers/misc/c2port/core.c +13 -17
@@ -867,14 +867,17 @@ static struct device_attribute c2port_attrs[] = { __ATTR_NULL, }; -static struct bin_attribute c2port_bin_attrs = { - .attr = { - .name ="flash_data" , - .mode =0644 +static struct bin_attribute c2port_bin_attrs[] = { + { + .attr = { + .name ="flash_data" , + .mode =0644 + }, + .read = c2port_read_flash_data, + .write = c2port_write_flash_data, +/* .size is computed at run-time */ }, - .read = c2port_read_flash_data, - .write = c2port_write_flash_data, -/* .size is computed at run-time */ + __ATTR_NULL };/*
@@ -907,6 +910,8 @@ struct c2port_device *c2port_device_register(char *name, goto error_idr_alloc; c2dev->id = ret; + c2port_bin_attrs[0 ].size = ops->blocks_num * ops->block_size; + c2dev->dev =device_create (c2port_class,NULL ,0 , c2dev,"c2port%d" , c2dev->id);if (unlikely (IS_ERR (c2dev->dev))) {
@@ -919,12 +924,6 @@ struct c2port_device *c2port_device_register(char *name, c2dev->ops = ops;mutex_init (&c2dev->mutex); -/* Create binary file */ - c2port_bin_attrs.size = ops->blocks_num * ops->block_size; - ret =device_create_bin_file (c2dev->dev, &c2port_bin_attrs); -if (unlikely (ret)) - goto error_device_create_bin_file; -/* By default C2 port access is off */ c2dev->access = c2dev->flash_access =0 ; ops->access (c2dev,0 );
@@ -937,9 +936,6 @@ struct c2port_device *c2port_device_register(char *name,return c2dev; -error_device_create_bin_file: -device_destroy (c2port_class,0 ); - error_device_create:spin_lock_irq (&c2port_idr_lock);idr_remove (&c2port_idr, c2dev->id);
@@ -959,7 +955,6 @@ void c2port_device_unregister(struct c2port_device *c2dev)dev_info (c2dev->dev,"C2 port %s removed\n" , c2dev->name); -device_remove_bin_file (c2dev->dev, &c2port_bin_attrs);spin_lock_irq (&c2port_idr_lock);idr_remove (&c2port_idr, c2dev->id);spin_unlock_irq (&c2port_idr_lock);
@@ -985,6 +980,7 @@ static int __init c2port_init(void)return PTR_ERR (c2port_class); } c2port_class->dev_attrs = c2port_attrs; + c2port_class->dev_bin_attrs = c2port_bin_attrs;return 0 ; }
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Greg Kroah-Hartman
maintainerPATCH 2/36 mips: convert vpe_class to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the MIPS vpe_class code to use the correct field.
---
Ralf, feel free to apply this to your tree, or ACK it and I can take it through mine.
arch/mips/kernel/vpe.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-)
arch/mips/kernel/vpe.c +10 -7
@@ -1335,8 +1335,9 @@ static ssize_t store_kill(struct device *dev, struct device_attribute *attr,return len; } +static DEVICE_ATTR(kill, S_IWUSR, NULL, store_kill); -static ssize_t show_ntcs (struct device *cd,struct device_attribute *attr, +static ssize_t ntcs_show (struct device *cd,struct device_attribute *attr,char *buf) {struct vpe *vpe =get_vpe (tclimit);
@@ -1344,7 +1345,7 @@ static ssize_t show_ntcs(struct device *cd, struct device_attribute *attr,return sprintf (buf,"%d\n" , vpe->ntcs); } -static ssize_t store_ntcs (struct device *dev,struct device_attribute *attr, +static ssize_t ntcs_store (struct device *dev,struct device_attribute *attr,const char *buf,size_t len) {struct vpe *vpe =get_vpe (tclimit);
@@ -1365,12 +1366,14 @@ static ssize_t store_ntcs(struct device *dev, struct device_attribute *attr, out_einval:return -EINVAL ; } +static DEVICE_ATTR_RW (ntcs); -static struct device_attribute vpe_class_attributes[] = { -__ATTR (kill,S_IWUSR ,NULL , store_kill), -__ATTR (ntcs,S_IRUGO |S_IWUSR , show_ntcs, store_ntcs), - {} +static struct attribute vpe_attrs[] = { + &dev_attr_kill.attr, + &dev_attr_ntcs.attr, +NULL , }; +ATTRIBUTE_GROUPS (vpe);static void vpe_device_release (struct device *cd) {
@@ -1381,7 +1384,7 @@ struct class vpe_class = { .name = "vpe", .owner = THIS_MODULE, .dev_release = vpe_device_release, - .dev_attrs = vpe_class_attributes, + .dev_groups = vpe_groups, };struct device vpe_device;
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Greg Kroah-Hartman
maintainerPATCH 3/36 bsr: convert bsr_class to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the bsr bsr_class code to use the correct field.
--- drivers/char/bsr.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-)
drivers/char/bsr.c +11 -7
@@ -95,6 +95,7 @@ bsr_size_show(struct device *dev, struct device_attribute *attr, char *buf)struct bsr_dev *bsr_dev =dev_get_drvdata (dev);return sprintf (buf,"%u\n" , bsr_dev->bsr_bytes); } +static DEVICE_ATTR_RO (bsr_size);static ssize_t bsr_stride_show (struct device *dev,struct device_attribute *attr,char *buf)
@@ -102,20 +103,23 @@ bsr_stride_show(struct device *dev, struct device_attribute *attr, char *buf)struct bsr_dev *bsr_dev =dev_get_drvdata (dev);return sprintf (buf,"%u\n" , bsr_dev->bsr_stride); } +static DEVICE_ATTR_RO (bsr_stride);static ssize_t -bsr_len_show (struct device *dev,struct device_attribute *attr,char *buf) +bsr_length_show (struct device *dev,struct device_attribute *attr,char *buf) {struct bsr_dev *bsr_dev =dev_get_drvdata (dev);return sprintf (buf,"%llu\n" , bsr_dev->bsr_len); } +static DEVICE_ATTR_RO (bsr_length); -static struct device_attribute bsr_dev_attrs[] = { -__ATTR (bsr_size,S_IRUGO , bsr_size_show,NULL ), -__ATTR (bsr_stride,S_IRUGO , bsr_stride_show,NULL ), -__ATTR (bsr_length,S_IRUGO , bsr_len_show,NULL ), - __ATTR_NULL +static struct attribute *bsr_dev_attrs[] = { + &dev_attr_bsr_size.attr, + &dev_attr_bsr_stride.attr, + &dev_attr_bsr_length.attr, +NULL , }; +ATTRIBUTE_GROUPS (bsr_dev);static int bsr_mmap (struct file *filp,struct vm_area_struct *vma) {
@@ -308,7 +312,7 @@ static int __init bsr_init(void) ret =PTR_ERR (bsr_class); goto out_err_1; } - bsr_class->dev_attrs = bsr_dev_attrs; + bsr_class->dev_groups = bsr_dev_groups; ret =alloc_chrdev_region (&bsr_dev,0 ,BSR_MAX_DEVS ,"bsr" ); bsr_major =MAJOR (bsr_dev);
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Greg Kroah-Hartman
maintainerPATCH 4/36 tile: srom: convert srom_class to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the tile srom_class code to use the correct field.
--- drivers/char/tile-srom.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-)
drivers/char/tile-srom.c +16 -12
@@ -279,33 +279,37 @@ loff_t srom_llseek(struct file *file, loff_t offset, int origin)return fixed_size_llseek (file, offset, origin, srom->total_size); } -static ssize_t total_show (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t total_size_show (struct device *dev, +struct device_attribute *attr,char *buf) {struct srom_dev *srom =dev_get_drvdata (dev);return sprintf (buf,"%u\n" , srom->total_size); } +static DEVICE_ATTR_RO (total_size); -static ssize_t sector_show (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t sector_size_show (struct device *dev, +struct device_attribute *attr,char *buf) {struct srom_dev *srom =dev_get_drvdata (dev);return sprintf (buf,"%u\n" , srom->sector_size); } +static DEVICE_ATTR_RO (sector_size); -static ssize_t page_show (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t page_size_show (struct device *dev, +struct device_attribute *attr,char *buf) {struct srom_dev *srom =dev_get_drvdata (dev);return sprintf (buf,"%u\n" , srom->page_size); } +static DEVICE_ATTR_RO (page_size); -static struct device_attribute srom_dev_attrs[] = { -__ATTR (total_size,S_IRUGO , total_show,NULL ), -__ATTR (sector_size,S_IRUGO , sector_show,NULL ), -__ATTR (page_size,S_IRUGO , page_show,NULL ), - __ATTR_NULL +static struct attribute srom_dev_attrs[] = { + &dev_attr_total_size.attr, + &dev_attr_sector_size.attr, + &dev_attr_page_size.attr, +NULL , }; +ATTRIBUTE_GROUPS (srom_dev);static char *srom_devnode (struct device *dev,umode_t *mode) {
@@ -418,7 +422,7 @@ static int srom_init(void) result =PTR_ERR (srom_class); goto fail_cdev; } - srom_class->dev_attrs = srom_dev_attrs; + srom_class->dev_groups = srom_dev_groups; srom_class->devnode = srom_devnode;/* Do per-partition initialization */
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Re: [PATCH 04/36] tile: srom: convert srom_class to use dev_groups
Quoted 9 lines · Greg Kroah-Hartman
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the tilesrom_classcode to use the correct field.Cc Arnd Bergmann <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>--- drivers/char/tile-srom.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-)
I just got a failed build email from the kisskb build server:
drivers/char/tile-srom.c:308:2: error: initializer element is not computable at load time drivers/char/tile-srom.c:308:2: error: (near initialization for 'srom_dev_attrs[0].mode')
plus a bunch of warnings:
drivers/char/tile-srom.c:307:2: warning: missing braces around initializer [-Wmissing-braces] drivers/char/tile-srom.c:307:2: warning: (near initialization for 'srom_dev_attrs[0]') [-Wmissing-braces] drivers/char/tile-srom.c:307:2: warning: initialization from incompatible pointer type [enabled by default] drivers/char/tile-srom.c:307:2: warning: (near initialization for 'srom_dev_attrs[0].name') [enabled by default] drivers/char/tile-srom.c:308:2: warning: initialization makes integer from pointer without a cast [enabled by default] drivers/char/tile-srom.c:308:2: warning: (near initialization for 'srom_dev_attrs[0].mode') [enabled by default] drivers/char/tile-srom.c:309:2: warning: initialization from incompatible pointer type [enabled by default] drivers/char/tile-srom.c:309:2: warning: (near initialization for 'srom_dev_attrs[1].name') [enabled by default] drivers/char/tile-srom.c:310:2: warning: initialization makes integer from pointer without a cast [enabled by default] drivers/char/tile-srom.c:310:2: warning: (near initialization for 'srom_dev_attrs[1].mode') [enabled by default] drivers/char/tile-srom.c:312:1: warning: initialization from incompatible pointer type [enabled by default] drivers/char/tile-srom.c:312:1: warning: (near initialization for 'srom_dev_group.attrs') [enabled by default]
Signature · 2 lines
Chris Metcalf, Tilera Corp. http://www.tilera.com
Greg Kroah-Hartman
maintainerRe: [PATCH 04/36] tile: srom: convert srom_class to use dev_groups
Quoted 11 lines · Chris Metcalf
Quoted 9 lines · Greg Kroah-Hartman
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the tilesrom_classcode to use the correct field.Cc Arnd Bergmann <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>--- drivers/char/tile-srom.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-)
Quoted 6 lines
I just got a failed build email from the kisskb build server:
drivers/char/tile-srom.c:308:2: error: initializer element is not computable at load timedrivers/char/tile-srom.c:308:2: error: (near initialization for 'srom_dev_attrs[0].mode')plus a bunch of warnings:
Yes, I just fixed that and pushed out my changes, I forgot a '*', sorry about that.
greg k-h
Greg Kroah-Hartman
maintainerPATCH 5/36 dma: convert dma_devclass to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the dma dma_devclass code to use the correct field.
---
Dan and Vinod, feel free to apply this to your trees, or ACK it and I can take it through mine.
drivers/dma/dmaengine.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-)
drivers/dma/dmaengine.c +16 -10
@@ -87,7 +87,8 @@ static struct dma_chan *dev_to_dma_chan(struct device *dev)return chan_dev->chan; } -static ssize_t show_memcpy_count (struct device *dev,struct device_attribute *attr,char *buf) +static ssize_t memcpy_count_show (struct device *dev, +struct device_attribute *attr,char *buf) {struct dma_chan *chan;unsigned long count =0 ;
@@ -106,9 +107,10 @@ static ssize_t show_memcpy_count(struct device *dev, struct device_attribute *atreturn err; } +static DEVICE_ATTR_RO (memcpy_count); -static ssize_t show_bytes_transferred (struct device *dev,struct device_attribute *attr, -char *buf) +static ssize_t bytes_transferred_show (struct device *dev, +struct device_attribute *attr,char *buf) {struct dma_chan *chan;unsigned long count =0 ;
@@ -127,8 +129,10 @@ static ssize_t show_bytes_transferred(struct device *dev, struct device_attributreturn err; } +static DEVICE_ATTR_RO (bytes_transferred); -static ssize_t show_in_use (struct device *dev,struct device_attribute *attr,char *buf) +static ssize_t in_use_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct dma_chan *chan;int err;
@@ -143,13 +147,15 @@ static ssize_t show_in_use(struct device *dev, struct device_attribute *attr, chreturn err; } +static DEVICE_ATTR_RO (in_use); -static struct device_attribute dma_attrs[] = { -__ATTR (memcpy_count,S_IRUGO , show_memcpy_count,NULL ), -__ATTR (bytes_transferred,S_IRUGO , show_bytes_transferred,NULL ), -__ATTR (in_use,S_IRUGO , show_in_use,NULL ), - __ATTR_NULL +static struct attribute *dma_dev_attrs[] = { + &dev_attr_memcpy_count.attr, + &dev_attr_bytes_transferred.attr, + &dev_attr_in_use.attr, +NULL , }; +ATTRIBUTE_GROUPS (dma_dev);static void chan_dev_release (struct device *dev) {
@@ -167,7 +173,7 @@ static void chan_dev_release(struct device *dev)static struct class dma_devclass = { .name ="dma" , - .dev_attrs = dma_attrs, + .dev_groups = dma_dev_groups, .dev_release = chan_dev_release, };
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Re: [PATCH 05/36] dma: convert dma_devclass to use dev_groups
Quoted 7 lines · Greg Kroah-Hartman
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the dmadma_devclasscode to use the correct field.Cc Dan Williams <[email protected]>Cc Vinod Koul <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>
~Vinod
Greg Kroah-Hartman
maintainerPATCH 6/36 devfreq: convert devfreq_class to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the devfreq_class code to use the correct field.
---
MyungJoo, feel free to apply this to your tree, or ACK it and I can take it through mine.
drivers/devfreq/devfreq.c | 78 ++++++++++++++++++++++++++---------------------
1 file changed, 44 insertions(+), 34 deletions(-)
drivers/devfreq/devfreq.c +44 -34
@@ -703,7 +703,7 @@ err_out: }EXPORT_SYMBOL (devfreq_remove_governor); -static ssize_t show_governor (struct device *dev, +static ssize_t governor_show (struct device *dev,struct device_attribute *attr,char *buf) {if (!to_devfreq (dev)->governor)
@@ -712,7 +712,7 @@ static ssize_t show_governor(struct device *dev,return sprintf (buf,"%s\n" ,to_devfreq (dev)->governor->name); } -static ssize_t store_governor (struct device *dev,struct device_attribute *attr, +static ssize_t governor_store (struct device *dev,struct device_attribute *attr,const char *buf,size_t count) {struct devfreq *df =to_devfreq (dev);
@@ -754,9 +754,11 @@ out: ret = count;return ret; } -static ssize_t show_available_governors (struct device *d, -struct device_attribute *attr, -char *buf) +static DEVICE_ATTR_RW (governor); + +static ssize_t available_governors_show (struct device *d, +struct device_attribute *attr, +char *buf) {struct devfreq_governor *tmp_governor;ssize_t count =0 ;
@@ -775,9 +777,10 @@ static ssize_t show_available_governors(struct device *d,return count; } +static DEVICE_ATTR_RO (available_governors); -static ssize_t show_freq (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t cur_freq_show (struct device *dev,struct device_attribute *attr, +char *buf) {unsigned long freq;struct devfreq *devfreq =to_devfreq (dev);
@@ -788,20 +791,22 @@ static ssize_t show_freq(struct device *dev,return sprintf (buf,"%lu\n" , devfreq->previous_freq); } +static DEVICE_ATTR_RO (cur_freq); -static ssize_t show_target_freq (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t target_freq_show (struct device *dev, +struct device_attribute *attr,char *buf) {return sprintf (buf,"%lu\n" ,to_devfreq (dev)->previous_freq); } +static DEVICE_ATTR_RO (target_freq); -static ssize_t show_polling_interval (struct device *dev, +static ssize_t polling_interval_show (struct device *dev,struct device_attribute *attr,char *buf) {return sprintf (buf,"%d\n" ,to_devfreq (dev)->profile->polling_ms); } -static ssize_t store_polling_interval (struct device *dev, +static ssize_t polling_interval_store (struct device *dev,struct device_attribute *attr,const char *buf,size_t count) {
@@ -821,8 +826,9 @@ static ssize_t store_polling_interval(struct device *dev,return ret; } +static DEVICE_ATTR_RW (polling_interval); -static ssize_t store_min_freq (struct device *dev,struct device_attribute *attr, +static ssize_t min_freq_store (struct device *dev,struct device_attribute *attr,const char *buf,size_t count) {struct devfreq *df =to_devfreq (dev);
@@ -849,13 +855,13 @@ unlock:return ret; } -static ssize_t show_min_freq (struct device *dev,struct device_attribute *attr, +static ssize_t min_freq_show (struct device *dev,struct device_attribute *attr,char *buf) {return sprintf (buf,"%lu\n" ,to_devfreq (dev)->min_freq); } -static ssize_t store_max_freq (struct device *dev,struct device_attribute *attr, +static ssize_t max_freq_store (struct device *dev,struct device_attribute *attr,const char *buf,size_t count) {struct devfreq *df =to_devfreq (dev);
@@ -881,16 +887,18 @@ unlock:mutex_unlock (&df->lock);return ret; } +static DEVICE_ATTR_RW (min_freq); -static ssize_t show_max_freq (struct device *dev,struct device_attribute *attr, +static ssize_t max_freq_show (struct device *dev,struct device_attribute *attr,char *buf) {return sprintf (buf,"%lu\n" ,to_devfreq (dev)->max_freq); } +static DEVICE_ATTR_RW (max_freq); -static ssize_t show_available_freqs (struct device *d, -struct device_attribute *attr, -char *buf) +static ssize_t available_frequencies_show (struct device *d, +struct device_attribute *attr, +char *buf) {struct devfreq *df =to_devfreq (d);struct device *dev = df->dev.parent;
@@ -918,9 +926,10 @@ static ssize_t show_available_freqs(struct device *d,return count; } +static DEVICE_ATTR_RO (available_frequencies); -static ssize_t show_trans_table (struct device *dev,struct device_attribute *attr, -char *buf) +static ssize_t trans_stat_show (struct device *dev, +struct device_attribute *attr,char *buf) {struct devfreq *devfreq =to_devfreq (dev);ssize_t len;
@@ -959,20 +968,21 @@ static ssize_t show_trans_table(struct device *dev, struct device_attribute *att devfreq->total_trans);return len; } - -static struct device_attribute devfreq_attrs[] = { -__ATTR (governor,S_IRUGO |S_IWUSR , show_governor, store_governor), -__ATTR (available_governors,S_IRUGO , show_available_governors,NULL ), -__ATTR (cur_freq,S_IRUGO , show_freq,NULL ), -__ATTR (available_frequencies,S_IRUGO , show_available_freqs,NULL ), -__ATTR (target_freq,S_IRUGO , show_target_freq,NULL ), -__ATTR (polling_interval,S_IRUGO |S_IWUSR , show_polling_interval, - store_polling_interval), -__ATTR (min_freq,S_IRUGO |S_IWUSR , show_min_freq, store_min_freq), -__ATTR (max_freq,S_IRUGO |S_IWUSR , show_max_freq, store_max_freq), -__ATTR (trans_stat,S_IRUGO , show_trans_table,NULL ), - { }, +static DEVICE_ATTR_RO (trans_stat); + +static struct attribute *devfreq_attrs[] = { + &dev_attr_governor.attr, + &dev_attr_available_governors.attr, + &dev_attr_cur_freq.attr, + &dev_attr_available_frequencies.attr, + &dev_attr_target_freq.attr, + &dev_attr_polling_interval.attr, + &dev_attr_min_freq.attr, + &dev_attr_max_freq.attr, + &dev_attr_trans_stat.attr, +NULL , }; +ATTRIBUTE_GROUPS (devfreq);static int __init devfreq_init (void ) {
@@ -988,7 +998,7 @@ static int __init devfreq_init(void)pr_err ("%s: couldn't create workqueue\n" , __FILE__);return PTR_ERR (devfreq_wq); } - devfreq_class->dev_attrs = devfreq_attrs; + devfreq_class->dev_groups = devfreq_groups;return 0 ; }
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Greg Kroah-Hartman
maintainerPATCH 7/36 extcon: convert extcon_class to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the extcon_class code to use the correct field.
---
MyungJoo, feel free to apply this to your tree, or ACK it and I can take it through mine.
drivers/extcon/extcon-class.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-)
drivers/extcon/extcon-class.c +8 -5
@@ -148,6 +148,7 @@ static ssize_t state_store(struct device *dev, struct device_attribute *attr,return count; } +static DEVICE_ATTR_RW (state);static ssize_t name_show (struct device *dev,struct device_attribute *attr,char *buf)
@@ -163,6 +164,7 @@ static ssize_t name_show(struct device *dev, struct device_attribute *attr,return sprintf (buf,"%s\n" ,dev_name (edev->dev)); } +static DEVICE_ATTR_RO (name);static ssize_t cable_name_show (struct device *dev,struct device_attribute *attr,char *buf)
@@ -527,11 +529,12 @@ int extcon_unregister_notifier(struct extcon_dev *edev, }EXPORT_SYMBOL_GPL (extcon_unregister_notifier); -static struct device_attribute extcon_attrs[] = { -__ATTR (state,S_IRUGO |S_IWUSR , state_show, state_store), -__ATTR_RO (name), - __ATTR_NULL, +static struct attribute *extcon_attrs[] = { + &dev_attr_state.attr, + &dev_attr_name.attr, +NULL , }; +ATTRIBUTE_GROUPS (extcon);static int create_extcon_class (void ) {
@@ -539,7 +542,7 @@ static int create_extcon_class(void) extcon_class =class_create (THIS_MODULE ,"extcon" );if (IS_ERR (extcon_class))return PTR_ERR (extcon_class); - extcon_class->dev_attrs = extcon_attrs; + extcon_class->dev_groups = extcon_groups;#if defined(CONFIG_ANDROID ) switch_class =class_compat_register ("switch" );
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Re: [PATCH 07/36] extcon: convert extcon_class to use dev_groups
Quoted 53 lines · Greg Kroah-Hartman
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts theextcon_classcode to use the correct field.Cc MyungJoo Ham <[email protected]>Cc Chanwoo Choi <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>---
MyungJoo, feel free to apply this to your tree, or ACK it and I can take it through mine.drivers/extcon/extcon-class.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-)drivers/extcon/extcon-class.c +7
-4@@ -148,6 +148,7 @@ static ssize_t state_store(struct device *dev, struct device_attribute *attr,return count; } +static DEVICE_ATTR_RW (state);static ssize_t name_show (struct device *dev,struct device_attribute *attr,char *buf)@@ -163,6 +164,7 @@ static ssize_t name_show(struct device *dev, struct device_attribute *attr,return sprintf (buf,"%s\n" ,dev_name (edev->dev)); } +static DEVICE_ATTR_RO (name);static ssize_t cable_name_show (struct device *dev,struct device_attribute *attr,char *buf)@@ -527,11 +529,12 @@ int extcon_unregister_notifier(struct extcon_dev *edev, }EXPORT_SYMBOL_GPL (extcon_unregister_notifier); -static struct device_attribute extcon_attrs[] = { -__ATTR (state,S_IRUGO |S_IWUSR , state_show, state_store), -__ATTR_RO (name), - __ATTR_NULL, +static struct attribute *extcon_attrs[] = { + &dev_attr_state.attr, + &dev_attr_name.attr, +NULL , }; +ATTRIBUTE_GROUPS (extcon);static int create_extcon_class (void ) {
drivers/extcon/extcon-class.c static int create_extcon_class(void) · line 548
Quoted 8 lines
drivers/extcon/extcon-class.c +1
-1@@ -539,7 +542,7 @@ static int create_extcon_class(void) extcon_class =class_create (THIS_MODULE ,"extcon" );if (IS_ERR (extcon_class))return PTR_ERR (extcon_class); - extcon_class->dev_attrs = extcon_attrs; + extcon_class->dev_groups = extcon_groups;#if defined(CONFIG_ANDROID ) switch_class =class_compat_register ("switch" );
Looks good to me. I tested this patch.
Thanks,
Chanwoo Choi
Greg Kroah-Hartman
maintainerPATCH 8/36 HID: roccat: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the roccat class code to use the correct field.
---
Jiri, feel free to apply this to your tree, or ACK it and I can take it through mine.
drivers/hid/hid-roccat-arvo.c | 25 ++++++++++++++----------- drivers/hid/hid-roccat-isku.c | 13 +++++++------ drivers/hid/hid-roccat-kone.c | 30 ++++++++++++++++++------------ drivers/hid/hid-roccat-koneplus.c | 28 ++++++++++++++++------------ drivers/hid/hid-roccat-kovaplus.c | 33 +++++++++++++++++++-------------- drivers/hid/hid-roccat-pyra.c | 24 ++++++++++++++---------- 6 files changed, 88 insertions(+), 65 deletions(-)
drivers/hid/hid-roccat-arvo.c +14 -11
@@ -75,6 +75,8 @@ static ssize_t arvo_sysfs_set_mode_key(struct device *dev,return size; } +static DEVICE_ATTR(mode_key, 0660, + arvo_sysfs_show_mode_key, arvo_sysfs_set_mode_key);static ssize_t arvo_sysfs_show_key_mask (struct device *dev,struct device_attribute *attr,char *buf)
@@ -123,6 +125,8 @@ static ssize_t arvo_sysfs_set_key_mask(struct device *dev,return size; } +static DEVICE_ATTR(key_mask, 0660, + arvo_sysfs_show_key_mask, arvo_sysfs_set_key_mask);/* retval is 1-5 on success, < 0 on error */ static int arvo_get_actual_profile (struct usb_device *usb_dev)
@@ -179,6 +183,9 @@ static ssize_t arvo_sysfs_set_actual_profile(struct device *dev,mutex_unlock (&arvo->arvo_lock);return retval; } +static DEVICE_ATTR(actual_profile, 0660, + arvo_sysfs_show_actual_profile, + arvo_sysfs_set_actual_profile); static ssize_t arvo_sysfs_write(struct file *fp, struct kobject *kobj, void const *buf,
@@ -239,17 +246,13 @@ static ssize_t arvo_sysfs_read_info(struct file *fp, sizeof(struct arvo_info), ARVO_COMMAND_INFO); } - -static struct device_attribute arvo_attributes[] = { -__ATTR (mode_key,0660 , - arvo_sysfs_show_mode_key, arvo_sysfs_set_mode_key), -__ATTR (key_mask,0660 , - arvo_sysfs_show_key_mask, arvo_sysfs_set_key_mask), -__ATTR (actual_profile,0660 , - arvo_sysfs_show_actual_profile, - arvo_sysfs_set_actual_profile), - __ATTR_NULL +static struct attribute *arvo_attrs[] = { + &dev_attr_mode_key.attr, + &dev_attr_key_mask.attr, + &dev_attr_actual_profile.attr, +NULL , }; +ATTRIBUTE_GROUPS (arvo);static struct bin_attribute arvo_bin_attributes[] = { {
@@ -430,7 +433,7 @@ static int __init arvo_init(void) arvo_class =class_create (THIS_MODULE ,"arvo" );if (IS_ERR (arvo_class))return PTR_ERR (arvo_class); - arvo_class->dev_attrs = arvo_attributes; + arvo_class->dev_groups = arvo_groups; arvo_class->dev_bin_attrs = arvo_bin_attributes; retval =hid_register_driver (&arvo_driver);
drivers/hid/hid-roccat-isku.c +7 -6
@@ -109,13 +109,14 @@ static ssize_t isku_sysfs_set_actual_profile(struct device *dev,return size; } +static DEVICE_ATTR(actual_profile, 0660, isku_sysfs_show_actual_profile, + isku_sysfs_set_actual_profile); -static struct device_attribute isku_attributes[] = { -__ATTR (actual_profile,0660 , - isku_sysfs_show_actual_profile, - isku_sysfs_set_actual_profile), - __ATTR_NULL +static struct attribute *isku_attrs[] = { + &dev_attr_actual_profile.attr, +NULL , }; +ATTRIBUTE_GROUPS (isku); static ssize_t isku_sysfs_read(struct file *fp, struct kobject *kobj, char *buf, loff_t off, size_t count,
@@ -427,7 +428,7 @@ static int __init isku_init(void) isku_class =class_create (THIS_MODULE ,"isku" );if (IS_ERR (isku_class))return PTR_ERR (isku_class); - isku_class->dev_attrs = isku_attributes; + isku_class->dev_groups = isku_groups; isku_class->dev_bin_attrs = isku_bin_attributes; retval =hid_register_driver (&isku_driver);
drivers/hid/hid-roccat-kone.c +18 -12
@@ -386,6 +386,7 @@ static ssize_t kone_sysfs_show_actual_profile(struct device *dev,hid_get_drvdata (dev_get_drvdata (dev->parent->parent));return snprintf (buf,PAGE_SIZE ,"%d\n" , kone->actual_profile); } +static DEVICE_ATTR(actual_profile, 0440, kone_sysfs_show_actual_profile, NULL);static ssize_t kone_sysfs_show_actual_dpi (struct device *dev,struct device_attribute *attr,char *buf)
@@ -394,6 +395,7 @@ static ssize_t kone_sysfs_show_actual_dpi(struct device *dev,hid_get_drvdata (dev_get_drvdata (dev->parent->parent));return snprintf (buf,PAGE_SIZE ,"%d\n" , kone->actual_dpi); } +static DEVICE_ATTR(actual_dpi, 0440, kone_sysfs_show_actual_dpi, NULL);/* weight is read each time, since we don't get informed when it's changed */ static ssize_t kone_sysfs_show_weight(struct device *dev,
@@ -416,6 +418,7 @@ static ssize_t kone_sysfs_show_weight(struct device *dev,return retval;return snprintf (buf,PAGE_SIZE ,"%d\n" , weight); } +static DEVICE_ATTR(weight, 0440, kone_sysfs_show_weight, NULL);static ssize_t kone_sysfs_show_firmware_version (struct device *dev,struct device_attribute *attr,char *buf)
@@ -424,6 +427,8 @@ static ssize_t kone_sysfs_show_firmware_version(struct device *dev,hid_get_drvdata (dev_get_drvdata (dev->parent->parent));return snprintf (buf,PAGE_SIZE ,"%d\n" , kone->firmware_version); } +static DEVICE_ATTR(firmware_version, 0440, kone_sysfs_show_firmware_version, + NULL);static ssize_t kone_sysfs_show_tcu (struct device *dev,struct device_attribute *attr,char *buf)
@@ -524,6 +529,7 @@ exit_unlock:mutex_unlock (&kone->kone_lock);return retval; } +static DEVICE_ATTR(tcu, 0660, kone_sysfs_show_tcu, kone_sysfs_set_tcu);static ssize_t kone_sysfs_show_startup_profile (struct device *dev,struct device_attribute *attr,char *buf)
@@ -570,15 +576,17 @@ static ssize_t kone_sysfs_set_startup_profile(struct device *dev,mutex_unlock (&kone->kone_lock);return size; } +static DEVICE_ATTR(startup_profile, 0660, kone_sysfs_show_startup_profile, + kone_sysfs_set_startup_profile); -static struct device_attribute kone_attributes[] = { +static struct attribute *kone_attrs[] = {/* * Read actual dpi settings. * Returns raw value for further processing. Refer to enum * kone_polling_rates to get real value. */ -__ATTR (actual_dpi,0440 , kone_sysfs_show_actual_dpi,NULL ), -__ATTR (actual_profile,0440 , kone_sysfs_show_actual_profile,NULL ), + &dev_attr_actual_dpi.attr, + &dev_attr_actual_profile.attr,/* * The mouse can be equipped with one of four supplied weights from 5
@@ -587,7 +595,7 @@ static struct device_attribute kone_attributes[] = {* by software. Refer to enum kone_weights to get corresponding real * weight. */ - __ATTR(weight, 0440, kone_sysfs_show_weight, NULL), + &dev_attr_weight.attr,/* * Prints firmware version stored in mouse as integer.
@@ -595,22 +603,20 @@ static struct device_attribute kone_attributes[] = {* to get the real version number the decimal point has to be shifted 2 * positions to the left. E.g. a value of 138 means 1.38. */ -__ATTR (firmware_version,0440 , - kone_sysfs_show_firmware_version,NULL ), + &dev_attr_firmware_version.attr,/* * Prints state of Tracking Control Unit as number where 0 = off and * 1 = on. Writing 0 deactivates tcu and writing 1 calibrates and * activates the tcu */ -__ATTR (tcu,0660 , kone_sysfs_show_tcu, kone_sysfs_set_tcu), + &dev_attr_tcu.attr,/* Prints and takes the number of the profile the mouse starts with */ -__ATTR (startup_profile,0660 , - kone_sysfs_show_startup_profile, - kone_sysfs_set_startup_profile), - __ATTR_NULL + &dev_attr_startup_profile.attr, +NULL , }; +ATTRIBUTE_GROUPS (kone);static struct bin_attribute kone_bin_attributes[] = { {
@@ -891,7 +897,7 @@ static int __init kone_init(void) kone_class =class_create (THIS_MODULE ,"kone" );if (IS_ERR (kone_class))return PTR_ERR (kone_class); - kone_class->dev_attrs = kone_attributes; + kone_class->dev_groups = kone_groups; kone_class->dev_bin_attrs = kone_bin_attributes; retval =hid_register_driver (&kone_driver);
drivers/hid/hid-roccat-koneplus.c +16 -12
@@ -274,6 +274,12 @@ static ssize_t koneplus_sysfs_set_actual_profile(struct device *dev,return size; } +static DEVICE_ATTR(actual_profile, 0660, + koneplus_sysfs_show_actual_profile, + koneplus_sysfs_set_actual_profile); +static DEVICE_ATTR(startup_profile, 0660, + koneplus_sysfs_show_actual_profile, + koneplus_sysfs_set_actual_profile);static ssize_t koneplus_sysfs_show_firmware_version (struct device *dev,struct device_attribute *attr,char *buf)
@@ -293,18 +299,16 @@ static ssize_t koneplus_sysfs_show_firmware_version(struct device *dev,return snprintf (buf,PAGE_SIZE ,"%d\n" , info.firmware_version); } - -static struct device_attribute koneplus_attributes[] = { -__ATTR (actual_profile,0660 , - koneplus_sysfs_show_actual_profile, - koneplus_sysfs_set_actual_profile), -__ATTR (startup_profile,0660 , - koneplus_sysfs_show_actual_profile, - koneplus_sysfs_set_actual_profile), -__ATTR (firmware_version,0440 , - koneplus_sysfs_show_firmware_version,NULL ), - __ATTR_NULL +static DEVICE_ATTR(firmware_version, 0440, + koneplus_sysfs_show_firmware_version, NULL); + +static struct attribute *koneplus_attrs[] = { + &dev_attr_actual_profile.attr, + &dev_attr_startup_profile.attr, + &dev_attr_firmware_version.attr, +NULL , }; +ATTRIBUTE_GROUPS (koneplus);static struct bin_attribute koneplus_bin_attributes[] = {KONEPLUS_BIN_ATTRIBUTE_W (control,CONTROL ),
@@ -572,7 +576,7 @@ static int __init koneplus_init(void) koneplus_class =class_create (THIS_MODULE ,"koneplus" );if (IS_ERR (koneplus_class))return PTR_ERR (koneplus_class); - koneplus_class->dev_attrs = koneplus_attributes; + koneplus_class->dev_groups = koneplus_groups; koneplus_class->dev_bin_attrs = koneplus_bin_attributes; retval =hid_register_driver (&koneplus_driver);
drivers/hid/hid-roccat-kovaplus.c +19 -14
@@ -310,6 +310,9 @@ static ssize_t kovaplus_sysfs_set_actual_profile(struct device *dev,return size; } +static DEVICE_ATTR(actual_profile, 0660, + kovaplus_sysfs_show_actual_profile, + kovaplus_sysfs_set_actual_profile);static ssize_t kovaplus_sysfs_show_actual_cpi (struct device *dev,struct device_attribute *attr,char *buf)
@@ -318,6 +321,7 @@ static ssize_t kovaplus_sysfs_show_actual_cpi(struct device *dev,hid_get_drvdata (dev_get_drvdata (dev->parent->parent));return snprintf (buf,PAGE_SIZE ,"%d\n" , kovaplus->actual_cpi); } +static DEVICE_ATTR(actual_cpi, 0440, kovaplus_sysfs_show_actual_cpi, NULL);static ssize_t kovaplus_sysfs_show_actual_sensitivity_x (struct device *dev,struct device_attribute *attr,char *buf)
@@ -326,6 +330,8 @@ static ssize_t kovaplus_sysfs_show_actual_sensitivity_x(struct device *dev,hid_get_drvdata (dev_get_drvdata (dev->parent->parent));return snprintf (buf,PAGE_SIZE ,"%d\n" , kovaplus->actual_x_sensitivity); } +static DEVICE_ATTR(actual_sensitivity_x, 0440, + kovaplus_sysfs_show_actual_sensitivity_x, NULL);static ssize_t kovaplus_sysfs_show_actual_sensitivity_y (struct device *dev,struct device_attribute *attr,char *buf)
@@ -334,6 +340,8 @@ static ssize_t kovaplus_sysfs_show_actual_sensitivity_y(struct device *dev,hid_get_drvdata (dev_get_drvdata (dev->parent->parent));return snprintf (buf,PAGE_SIZE ,"%d\n" , kovaplus->actual_y_sensitivity); } +static DEVICE_ATTR(actual_sensitivity_y, 0440, + kovaplus_sysfs_show_actual_sensitivity_y, NULL);static ssize_t kovaplus_sysfs_show_firmware_version (struct device *dev,struct device_attribute *attr,char *buf)
@@ -353,21 +361,18 @@ static ssize_t kovaplus_sysfs_show_firmware_version(struct device *dev,return snprintf (buf,PAGE_SIZE ,"%d\n" , info.firmware_version); } +static DEVICE_ATTR(firmware_version, 0440, + kovaplus_sysfs_show_firmware_version, NULL); -static struct device_attribute kovaplus_attributes[] = { -__ATTR (actual_cpi,0440 , - kovaplus_sysfs_show_actual_cpi,NULL ), -__ATTR (firmware_version,0440 , - kovaplus_sysfs_show_firmware_version,NULL ), -__ATTR (actual_profile,0660 , - kovaplus_sysfs_show_actual_profile, - kovaplus_sysfs_set_actual_profile), -__ATTR (actual_sensitivity_x,0440 , - kovaplus_sysfs_show_actual_sensitivity_x,NULL ), -__ATTR (actual_sensitivity_y,0440 , - kovaplus_sysfs_show_actual_sensitivity_y,NULL ), - __ATTR_NULL +static struct attribute *kovaplus_attrs[] = { + &dev_attr_actual_cpi.attr, + &dev_attr_firmware_version.attr, + &dev_attr_actual_profile.attr, + &dev_attr_actual_sensitivity_x.attr, + &dev_attr_actual_sensitivity_y.attr, +NULL , }; +ATTRIBUTE_GROUPS (kovaplus);static struct bin_attribute kovaplus_bin_attributes[] = {KOVAPLUS_BIN_ATTRIBUTE_W (control,CONTROL ),
@@ -662,7 +667,7 @@ static int __init kovaplus_init(void) kovaplus_class =class_create (THIS_MODULE ,"kovaplus" );if (IS_ERR (kovaplus_class))return PTR_ERR (kovaplus_class); - kovaplus_class->dev_attrs = kovaplus_attributes; + kovaplus_class->dev_groups = kovaplus_groups; kovaplus_class->dev_bin_attrs = kovaplus_bin_attributes; retval =hid_register_driver (&kovaplus_driver);
drivers/hid/hid-roccat-pyra.c +14 -10
@@ -266,6 +266,7 @@ static ssize_t pyra_sysfs_show_actual_cpi(struct device *dev,hid_get_drvdata (dev_get_drvdata (dev->parent->parent));return snprintf (buf,PAGE_SIZE ,"%d\n" , pyra->actual_cpi); } +static DEVICE_ATTR(actual_cpi, 0440, pyra_sysfs_show_actual_cpi, NULL);static ssize_t pyra_sysfs_show_actual_profile (struct device *dev,struct device_attribute *attr,char *buf)
@@ -282,6 +283,8 @@ static ssize_t pyra_sysfs_show_actual_profile(struct device *dev,return snprintf (buf,PAGE_SIZE ,"%d\n" , settings.startup_profile); } +static DEVICE_ATTR(actual_profile, 0440, pyra_sysfs_show_actual_profile, NULL); +static DEVICE_ATTR(startup_profile, 0440, pyra_sysfs_show_actual_profile, NULL);static ssize_t pyra_sysfs_show_firmware_version (struct device *dev,struct device_attribute *attr,char *buf)
@@ -301,16 +304,17 @@ static ssize_t pyra_sysfs_show_firmware_version(struct device *dev,return snprintf (buf,PAGE_SIZE ,"%d\n" , info.firmware_version); } - -static struct device_attribute pyra_attributes[] = { -__ATTR (actual_cpi,0440 , pyra_sysfs_show_actual_cpi,NULL ), -__ATTR (actual_profile,0440 , pyra_sysfs_show_actual_profile,NULL ), -__ATTR (firmware_version,0440 , - pyra_sysfs_show_firmware_version,NULL ), -__ATTR (startup_profile,0440 , - pyra_sysfs_show_actual_profile,NULL ), - __ATTR_NULL +static DEVICE_ATTR(firmware_version, 0440, pyra_sysfs_show_firmware_version, + NULL); + +static struct attribute *pyra_attrs[] = { + &dev_attr_actual_cpi.attr, + &dev_attr_actual_profile.attr, + &dev_attr_firmware_version.attr, + &dev_attr_startup_profile.attr, +NULL , }; +ATTRIBUTE_GROUPS (pyra);static struct bin_attribute pyra_bin_attributes[] = {PYRA_BIN_ATTRIBUTE_W (control,CONTROL ),
@@ -600,7 +604,7 @@ static int __init pyra_init(void) pyra_class =class_create (THIS_MODULE ,"pyra" );if (IS_ERR (pyra_class))return PTR_ERR (pyra_class); - pyra_class->dev_attrs = pyra_attributes; + pyra_class->dev_groups = pyra_groups; pyra_class->dev_bin_attrs = pyra_bin_attributes; retval =hid_register_driver (&pyra_driver);
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Greg Kroah-Hartman
maintainerPATCH 9/36 ISDN: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the mISDN class code to use the correct field.
---
Karsten, feel free to apply this to your tree, or ACK it and I can take it through mine.
drivers/isdn/mISDN/core.c | 64 ++++++++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 28 deletions(-)
drivers/isdn/mISDN/core.c +36 -28
@@ -37,8 +37,8 @@ static void mISDN_dev_release(struct device *dev)/* nothing to do: the device is part of its parent's data structure */ } -static ssize_t _show_id (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t id_show (struct device *dev, +struct device_attribute *attr,char *buf) {struct mISDNdevice *mdev =dev_to_mISDN (dev);
@@ -46,9 +46,10 @@ static ssize_t _show_id(struct device *dev,return -ENODEV ;return sprintf (buf,"%d\n" , mdev->id); } +static DEVICE_ATTR_RO (id); -static ssize_t _show_nrbchan (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t nrbchan_show (struct device *dev, +struct device_attribute *attr,char *buf) {struct mISDNdevice *mdev =dev_to_mISDN (dev);
@@ -56,9 +57,10 @@ static ssize_t _show_nrbchan(struct device *dev,return -ENODEV ;return sprintf (buf,"%d\n" , mdev->nrbchan); } +static DEVICE_ATTR_RO (nrbchan); -static ssize_t _show_d_protocols (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t d_protocols_show (struct device *dev, +struct device_attribute *attr,char *buf) {struct mISDNdevice *mdev =dev_to_mISDN (dev);
@@ -66,9 +68,10 @@ static ssize_t _show_d_protocols(struct device *dev,return -ENODEV ;return sprintf (buf,"%d\n" , mdev->Dprotocols); } +static DEVICE_ATTR_RO (d_protocols); -static ssize_t _show_b_protocols (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t b_protocols_show (struct device *dev, +struct device_attribute *attr,char *buf) {struct mISDNdevice *mdev =dev_to_mISDN (dev);
@@ -76,9 +79,10 @@ static ssize_t _show_b_protocols(struct device *dev,return -ENODEV ;return sprintf (buf,"%d\n" , mdev->Bprotocols |get_all_Bprotocols ()); } +static DEVICE_ATTR_RO (b_protocols); -static ssize_t _show_protocol (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t protocol_show (struct device *dev, +struct device_attribute *attr,char *buf) {struct mISDNdevice *mdev =dev_to_mISDN (dev);
@@ -86,17 +90,19 @@ static ssize_t _show_protocol(struct device *dev,return -ENODEV ;return sprintf (buf,"%d\n" , mdev->D.protocol); } +static DEVICE_ATTR_RO (protocol); -static ssize_t _show_name (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t name_show (struct device *dev, +struct device_attribute *attr,char *buf) {strcpy (buf,dev_name (dev));return strlen (buf); } +static DEVICE_ATTR_RO (name);#if 0 /* hangs */ -static ssize_t _set_name (struct device *dev,struct device_attribute *attr, -const char *buf,size_t count) +static ssize_t name_set (struct device *dev,struct device_attribute *attr, +const char *buf,size_t count) {int err =0 ;char *out =kmalloc (count +1 ,GFP_KERNEL );
@@ -113,10 +119,11 @@ static ssize_t _set_name(struct device *dev, struct device_attribute *attr, return (err < 0) ? err : count; } +static DEVICE_ATTR_RW (name);#endif -static ssize_t _show_channelmap (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t channelmap_show (struct device *dev, +struct device_attribute *attr,char *buf) {struct mISDNdevice *mdev =dev_to_mISDN (dev);char *bp = buf;
@@ -127,18 +134,19 @@ static ssize_t _show_channelmap(struct device *dev,return bp - buf; } - -static struct device_attribute mISDN_dev_attrs[] = { -__ATTR (id,S_IRUGO , _show_id,NULL ), -__ATTR (d_protocols,S_IRUGO , _show_d_protocols,NULL ), -__ATTR (b_protocols,S_IRUGO , _show_b_protocols,NULL ), -__ATTR (protocol,S_IRUGO , _show_protocol,NULL ), -__ATTR (channelmap,S_IRUGO , _show_channelmap,NULL ), -__ATTR (nrbchan,S_IRUGO , _show_nrbchan,NULL ), -__ATTR (name,S_IRUGO , _show_name,NULL ), -/* __ATTR(name, S_IRUGO | S_IWUSR, _show_name, _set_name), */ - {} +static DEVICE_ATTR_RO (channelmap); + +static struct attribute *mISDN_attrs[] = { + &dev_attr_id.attr, + &dev_attr_d_protocols.attr, + &dev_attr_b_protocols.attr, + &dev_attr_protocol.attr, + &dev_attr_channelmap.attr, + &dev_attr_nrbchan.attr, + &dev_attr_name.attr, +NULL , }; +ATTRIBUTE_GROUPS (mISDN);static int mISDN_uevent (struct device *dev,struct kobj_uevent_env *env) {
@@ -162,7 +170,7 @@ static struct class mISDN_class = { .name = "mISDN", .owner = THIS_MODULE, .dev_uevent = mISDN_uevent, - .dev_attrs = mISDN_dev_attrs, + .dev_groups = mISDN_groups, .dev_release = mISDN_dev_release, .class_release = mISDN_class_release, };
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Re: [PATCH 09/36] ISDN: convert class code to use dev_groups
Am 25.07.2013 00:05, schrieb Greg Kroah-Hartman:
Quoted 6 lines
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the mISDN class code to use the correct field.Cc Karsten Keil <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>
Quoted 154 lines
---
Karsten, feel free to apply this to your tree, or ACK it and I can take it through mine.
drivers/isdn/mISDN/core.c | 64 ++++++++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 28 deletions(-)drivers/isdn/mISDN/core.c +36
-28@@ -37,8 +37,8 @@ static void mISDN_dev_release(struct device *dev)/* nothing to do: the device is part of its parent's data structure */ } -static ssize_t _show_id (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t id_show (struct device *dev, +struct device_attribute *attr,char *buf) {struct mISDNdevice *mdev =dev_to_mISDN (dev);@@ -46,9 +46,10 @@ static ssize_t _show_id(struct device *dev,return -ENODEV ;return sprintf (buf,"%d\n" , mdev->id); } +static DEVICE_ATTR_RO (id); -static ssize_t _show_nrbchan (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t nrbchan_show (struct device *dev, +struct device_attribute *attr,char *buf) {struct mISDNdevice *mdev =dev_to_mISDN (dev);@@ -56,9 +57,10 @@ static ssize_t _show_nrbchan(struct device *dev,return -ENODEV ;return sprintf (buf,"%d\n" , mdev->nrbchan); } +static DEVICE_ATTR_RO (nrbchan); -static ssize_t _show_d_protocols (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t d_protocols_show (struct device *dev, +struct device_attribute *attr,char *buf) {struct mISDNdevice *mdev =dev_to_mISDN (dev);@@ -66,9 +68,10 @@ static ssize_t _show_d_protocols(struct device *dev,return -ENODEV ;return sprintf (buf,"%d\n" , mdev->Dprotocols); } +static DEVICE_ATTR_RO (d_protocols); -static ssize_t _show_b_protocols (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t b_protocols_show (struct device *dev, +struct device_attribute *attr,char *buf) {struct mISDNdevice *mdev =dev_to_mISDN (dev);@@ -76,9 +79,10 @@ static ssize_t _show_b_protocols(struct device *dev,return -ENODEV ;return sprintf (buf,"%d\n" , mdev->Bprotocols |get_all_Bprotocols ()); } +static DEVICE_ATTR_RO (b_protocols); -static ssize_t _show_protocol (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t protocol_show (struct device *dev, +struct device_attribute *attr,char *buf) {struct mISDNdevice *mdev =dev_to_mISDN (dev);@@ -86,17 +90,19 @@ static ssize_t _show_protocol(struct device *dev,return -ENODEV ;return sprintf (buf,"%d\n" , mdev->D.protocol); } +static DEVICE_ATTR_RO (protocol); -static ssize_t _show_name (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t name_show (struct device *dev, +struct device_attribute *attr,char *buf) {strcpy (buf,dev_name (dev));return strlen (buf); } +static DEVICE_ATTR_RO (name);#if 0 /* hangs */ -static ssize_t _set_name (struct device *dev,struct device_attribute *attr, -const char *buf,size_t count) +static ssize_t name_set (struct device *dev,struct device_attribute *attr, +const char *buf,size_t count) {int err =0 ;char *out =kmalloc (count +1 ,GFP_KERNEL );@@ -113,10 +119,11 @@ static ssize_t _set_name(struct device *dev, struct device_attribute *attr, return (err < 0) ? err : count; } +static DEVICE_ATTR_RW (name);#endif -static ssize_t _show_channelmap (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t channelmap_show (struct device *dev, +struct device_attribute *attr,char *buf) {struct mISDNdevice *mdev =dev_to_mISDN (dev);char *bp = buf;@@ -127,18 +134,19 @@ static ssize_t _show_channelmap(struct device *dev,return bp - buf; } - -static struct device_attribute mISDN_dev_attrs[] = { -__ATTR (id,S_IRUGO , _show_id,NULL ), -__ATTR (d_protocols,S_IRUGO , _show_d_protocols,NULL ), -__ATTR (b_protocols,S_IRUGO , _show_b_protocols,NULL ), -__ATTR (protocol,S_IRUGO , _show_protocol,NULL ), -__ATTR (channelmap,S_IRUGO , _show_channelmap,NULL ), -__ATTR (nrbchan,S_IRUGO , _show_nrbchan,NULL ), -__ATTR (name,S_IRUGO , _show_name,NULL ), -/* __ATTR(name, S_IRUGO | S_IWUSR, _show_name, _set_name), */ - {} +static DEVICE_ATTR_RO (channelmap); + +static struct attribute *mISDN_attrs[] = { + &dev_attr_id.attr, + &dev_attr_d_protocols.attr, + &dev_attr_b_protocols.attr, + &dev_attr_protocol.attr, + &dev_attr_channelmap.attr, + &dev_attr_nrbchan.attr, + &dev_attr_name.attr, +NULL , }; +ATTRIBUTE_GROUPS (mISDN);static int mISDN_uevent (struct device *dev,struct kobj_uevent_env *env) {@@ -162,7 +170,7 @@ static struct class mISDN_class = { .name = "mISDN", .owner = THIS_MODULE, .dev_uevent = mISDN_uevent, - .dev_attrs = mISDN_dev_attrs, + .dev_groups = mISDN_groups, .dev_release = mISDN_dev_release, .class_release = mISDN_class_release, };
Greg Kroah-Hartman
maintainerPATCH 10/36 leds: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the led class code to use the correct field.
---
Bryan and Richard, feel free to take this through your tree, or ACK it and I can take it through mine.
drivers/leds/led-class.c | 38 ++++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-)
drivers/leds/led-class.c +30 -8
@@ -29,7 +29,7 @@ static void led_update_brightness(struct led_classdev *led_cdev) led_cdev->brightness = led_cdev->brightness_get (led_cdev); } -static ssize_t led_brightness_show (struct device *dev, +static ssize_t brightness_show (struct device *dev,struct device_attribute *attr,char *buf) {struct led_classdev *led_cdev =dev_get_drvdata (dev);
@@ -40,7 +40,7 @@ static ssize_t led_brightness_show(struct device *dev,return sprintf (buf,"%u\n" , led_cdev->brightness); } -static ssize_t led_brightness_store (struct device *dev, +static ssize_t brightness_store (struct device *dev,struct device_attribute *attr,const char *buf,size_t size) {struct led_classdev *led_cdev =dev_get_drvdata (dev);
@@ -57,6 +57,7 @@ static ssize_t led_brightness_store(struct device *dev,return size; } +static DEVICE_ATTR_RW (brightness);static ssize_t led_max_brightness_show (struct device *dev,struct device_attribute *attr,char *buf)
@@ -65,14 +66,35 @@ static ssize_t led_max_brightness_show(struct device *dev,return sprintf (buf,"%u\n" , led_cdev->max_brightness); } +static DEVICE_ATTR(max_brightness, 0444, led_max_brightness_show, NULL); -static struct device_attribute led_class_attrs[] = { -__ATTR (brightness,0644 , led_brightness_show, led_brightness_store), -__ATTR (max_brightness,0444 , led_max_brightness_show,NULL ),#ifdef CONFIG_LEDS_TRIGGERS -__ATTR (trigger,0644 , led_trigger_show, led_trigger_store), +static DEVICE_ATTR(trigger, 0644, led_trigger_show, led_trigger_store); +static struct attribute *led_trigger_attrs[] = { + &dev_attr_trigger.attr, +NULL , +}; +static const struct attribute_group led_trigger_group = { + .attrs = led_trigger_attrs, +}; +#endif + +static struct attribute *led_class_attrs[] = { + &dev_attr_brightness.attr, + &dev_attr_max_brightness.attr, +NULL , +}; + +static const struct attribute_group led_group = { + .attrs = led_class_attrs, +}; + +static const struct attribute_group *led_groups[] = { + &led_group, +#ifdef CONFIG_LEDS_TRIGGERS + &led_trigger_group, #endif - __ATTR_NULL, +NULL , };static void led_timer_function (unsigned long data)
@@ -258,7 +280,7 @@ static int __init leds_init(void)if (IS_ERR (leds_class))return PTR_ERR (leds_class); leds_class->pm = &leds_class_dev_pm_ops; - leds_class->dev_attrs = led_class_attrs; + leds_class->dev_groups = led_groups;return 0 ; }
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Re: [PATCH 10/36] leds: convert class code to use dev_groups
Quoted 4 lines · Greg Kroah-Hartman
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the led class code to use the correct field.
Quoted 8 lines
Cc Bryan Wu <[email protected]>Cc Richard Purdie <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>---
Bryan and Richard, feel free to take this through your tree, or ACK it and I can take it through mine.
Looks good to me, please take it through yours with my ACK.
Thanks,
-Bryan
Quoted 86 lines
drivers/leds/led-class.c | 38 ++++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-)drivers/leds/led-class.c +30
-9@@ -29,7 +29,7 @@ static void led_update_brightness(struct led_classdev *led_cdev) led_cdev->brightness = led_cdev->brightness_get (led_cdev); } -static ssize_t led_brightness_show (struct device *dev, +static ssize_t brightness_show (struct device *dev,struct device_attribute *attr,char *buf) {struct led_classdev *led_cdev =dev_get_drvdata (dev);@@ -40,7 +40,7 @@ static ssize_t led_brightness_show(struct device *dev,return sprintf (buf,"%u\n" , led_cdev->brightness); } -static ssize_t led_brightness_store (struct device *dev, +static ssize_t brightness_store (struct device *dev,struct device_attribute *attr,const char *buf,size_t size) {struct led_classdev *led_cdev =dev_get_drvdata (dev);@@ -57,6 +57,7 @@ static ssize_t led_brightness_store(struct device *dev,return size; } +static DEVICE_ATTR_RW (brightness);static ssize_t led_max_brightness_show (struct device *dev,struct device_attribute *attr,char *buf)@@ -65,14 +66,35 @@ static ssize_t led_max_brightness_show(struct device *dev,return sprintf (buf,"%u\n" , led_cdev->max_brightness); } +static DEVICE_ATTR(max_brightness, 0444, led_max_brightness_show, NULL); -static struct device_attribute led_class_attrs[] = { -__ATTR (brightness,0644 , led_brightness_show, led_brightness_store), -__ATTR (max_brightness,0444 , led_max_brightness_show,NULL ),#ifdef CONFIG_LEDS_TRIGGERS -__ATTR (trigger,0644 , led_trigger_show, led_trigger_store), +static DEVICE_ATTR(trigger, 0644, led_trigger_show, led_trigger_store); +static struct attribute *led_trigger_attrs[] = { + &dev_attr_trigger.attr, +NULL , +}; +static const struct attribute_group led_trigger_group = { + .attrs = led_trigger_attrs, +}; +#endif + +static struct attribute *led_class_attrs[] = { + &dev_attr_brightness.attr, + &dev_attr_max_brightness.attr, +NULL , +}; + +static const struct attribute_group led_group = { + .attrs = led_class_attrs, +}; + +static const struct attribute_group *led_groups[] = { + &led_group, +#ifdef CONFIG_LEDS_TRIGGERS + &led_trigger_group, #endif - __ATTR_NULL, +NULL , };static void led_timer_function (unsigned long data)@@ -258,7 +280,7 @@ static int __init leds_init(void)if (IS_ERR (leds_class))return PTR_ERR (leds_class); leds_class->pm = &leds_class_dev_pm_ops; - leds_class->dev_attrs = led_class_attrs; + leds_class->dev_groups = led_groups;return 0 ; } --1.8.3.rc0.20.gb99dd2e
Greg Kroah-Hartman
maintainerPATCH 11/36 v4l2: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the v4l2 class code to use the correct field.
---
Mauro, feel free to take this through your tree, or ACK it and I can take it through mine.
drivers/media/v4l2-core/v4l2-dev.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-)
drivers/media/v4l2-core/v4l2-dev.c +17 -13
@@ -38,24 +38,25 @@* sysfs stuff */ -static ssize_t show_index (struct device *cd, -struct device_attribute *attr,char *buf) +static ssize_t index_show (struct device *cd, +struct device_attribute *attr,char *buf) {struct video_device *vdev =to_video_device (cd);return sprintf (buf,"%i\n" , vdev->index); } +static DEVICE_ATTR_RO (index); -static ssize_t show_debug (struct device *cd, -struct device_attribute *attr,char *buf) +static ssize_t debug_show (struct device *cd, +struct device_attribute *attr,char *buf) {struct video_device *vdev =to_video_device (cd);return sprintf (buf,"%i\n" , vdev->debug); } -static ssize_t set_debug (struct device *cd,struct device_attribute *attr, -const char *buf,size_t len) +static ssize_t debug_store (struct device *cd,struct device_attribute *attr, +const char *buf,size_t len) {struct video_device *vdev =to_video_device (cd);int res =0 ;
@@ -68,21 +69,24 @@ static ssize_t set_debug(struct device *cd, struct device_attribute *attr, vdev->debug = value;return len; } +static DEVICE_ATTR_RW (debug); -static ssize_t show_name (struct device *cd, +static ssize_t name_show (struct device *cd,struct device_attribute *attr,char *buf) {struct video_device *vdev =to_video_device (cd);return sprintf (buf,"%.*s\n" , (int )sizeof (vdev->name), vdev->name); } +static DEVICE_ATTR_RO (name); -static struct device_attribute video_device_attrs[] = { -__ATTR (name,S_IRUGO , show_name,NULL ), -__ATTR (debug,0644 , show_debug, set_debug), -__ATTR (index,S_IRUGO , show_index,NULL ), - __ATTR_NULL +static struct attribute *video_device_attrs[] = { + &dev_attr_name.attr, + &dev_attr_debug.attr, + &dev_attr_index.attr, +NULL , }; +ATTRIBUTE_GROUPS (video_device);/* * Active devices
@@ -217,7 +221,7 @@ static void v4l2_device_release(struct device *cd)static struct class video_class = { .name =VIDEO_NAME , - .dev_attrs = video_device_attrs, + .dev_groups = video_device_groups, };struct video_device *video_devdata (struct file *file)
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Greg Kroah-Hartman
maintainerPATCH 12/36 c2port: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the c2port class code to use the correct field.
--- drivers/misc/c2port/core.c | 50 +++++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 21 deletions(-)
drivers/misc/c2port/core.c +29 -21
@@ -311,6 +311,7 @@ static ssize_t c2port_show_name(struct device *dev,return sprintf (buf,"%s\n" , c2dev->name); } +static DEVICE_ATTR(name, 0444, c2port_show_name, NULL);static ssize_t c2port_show_flash_blocks_num (struct device *dev,struct device_attribute *attr,char *buf)
@@ -320,6 +321,7 @@ static ssize_t c2port_show_flash_blocks_num(struct device *dev,return sprintf (buf,"%d\n" , ops->blocks_num); } +static DEVICE_ATTR(flash_blocks_num, 0444, c2port_show_flash_blocks_num, NULL);static ssize_t c2port_show_flash_block_size (struct device *dev,struct device_attribute *attr,char *buf)
@@ -329,6 +331,7 @@ static ssize_t c2port_show_flash_block_size(struct device *dev,return sprintf (buf,"%d\n" , ops->block_size); } +static DEVICE_ATTR(flash_block_size, 0444, c2port_show_flash_block_size, NULL);static ssize_t c2port_show_flash_size (struct device *dev,struct device_attribute *attr,char *buf)
@@ -338,18 +341,18 @@ static ssize_t c2port_show_flash_size(struct device *dev,return sprintf (buf,"%d\n" , ops->blocks_num * ops->block_size); } +static DEVICE_ATTR(flash_size, 0444, c2port_show_flash_size, NULL); -static ssize_t c2port_show_access (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t access_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct c2port_device *c2dev =dev_get_drvdata (dev);return sprintf (buf,"%d\n" , c2dev->access); } -static ssize_t c2port_store_access (struct device *dev, -struct device_attribute *attr, -const char *buf,size_t count) +static ssize_t access_store (struct device *dev,struct device_attribute *attr, +const char *buf,size_t count) {struct c2port_device *c2dev =dev_get_drvdata (dev);struct c2port_ops *ops = c2dev->ops;
@@ -375,6 +378,7 @@ static ssize_t c2port_store_access(struct device *dev,return count; } +static DEVICE_ATTR_RW (access); static ssize_t c2port_store_reset(struct device *dev, struct device_attribute *attr,
@@ -395,6 +399,7 @@ static ssize_t c2port_store_reset(struct device *dev,return count; } +static DEVICE_ATTR(reset, 0200, NULL, c2port_store_reset);static ssize_t __c2port_show_dev_id (struct c2port_device *dev,char *buf) {
@@ -431,6 +436,7 @@ static ssize_t c2port_show_dev_id(struct device *dev,return ret; } +static DEVICE_ATTR(dev_id, 0444, c2port_show_dev_id, NULL);static ssize_t __c2port_show_rev_id (struct c2port_device *dev,char *buf) {
@@ -467,6 +473,7 @@ static ssize_t c2port_show_rev_id(struct device *dev,return ret; } +static DEVICE_ATTR(rev_id, 0444, c2port_show_rev_id, NULL);static ssize_t c2port_show_flash_access (struct device *dev,struct device_attribute *attr,char *buf)
@@ -536,6 +543,8 @@ static ssize_t c2port_store_flash_access(struct device *dev,return count; } +static DEVICE_ATTR(flash_access, 0644, c2port_show_flash_access, + c2port_store_flash_access);static ssize_t __c2port_write_flash_erase (struct c2port_device *dev) {
@@ -616,6 +625,7 @@ static ssize_t c2port_store_flash_erase(struct device *dev,return count; } +static DEVICE_ATTR(flash_erase, 0200, NULL, c2port_store_flash_erase);static ssize_t __c2port_read_flash_data (struct c2port_device *dev,char *buffer,loff_t offset,size_t count)
@@ -850,22 +860,20 @@ static ssize_t c2port_write_flash_data(struct file *filp, struct kobject *kobj,/* * Class attributes */ - -static struct device_attribute c2port_attrs[] = { -__ATTR (name,0444 , c2port_show_name,NULL ), -__ATTR (flash_blocks_num,0444 , c2port_show_flash_blocks_num,NULL ), -__ATTR (flash_block_size,0444 , c2port_show_flash_block_size,NULL ), -__ATTR (flash_size,0444 , c2port_show_flash_size,NULL ), -__ATTR (access,0644 , c2port_show_access, c2port_store_access), -__ATTR (reset,0200 ,NULL , c2port_store_reset), -__ATTR (dev_id,0444 , c2port_show_dev_id,NULL ), -__ATTR (rev_id,0444 , c2port_show_rev_id,NULL ), - -__ATTR (flash_access,0644 , c2port_show_flash_access, - c2port_store_flash_access), -__ATTR (flash_erase,0200 ,NULL , c2port_store_flash_erase), - __ATTR_NULL, +static struct attribute *c2port_attrs[] = { + &dev_attr_name.attr, + &dev_attr_flash_blocks_num.attr, + &dev_attr_flash_block_size.attr, + &dev_attr_flash_size.attr, + &dev_attr_access.attr, + &dev_attr_reset.attr, + &dev_attr_dev_id.attr, + &dev_attr_rev_id.attr, + &dev_attr_flash_access.attr, + &dev_attr_flash_erase.attr, +NULL , }; +ATTRIBUTE_GROUPS (c2port);static struct bin_attribute c2port_bin_attrs[] = { {
@@ -979,7 +987,7 @@ static int __init c2port_init(void)printk (KERN_ERR "c2port: failed to allocate class\n" );return PTR_ERR (c2port_class); } - c2port_class->dev_attrs = c2port_attrs; + c2port_class->dev_groups = c2port_groups; c2port_class->dev_bin_attrs = c2port_bin_attrs;return 0 ;
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Greg Kroah-Hartman
maintainerPATCH 13/36 enclosure: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the enclosure class code to use the correct field.
--- drivers/misc/enclosure.c | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-)
drivers/misc/enclosure.c +11 -18
@@ -239,7 +239,7 @@ static void enclosure_component_release(struct device *dev)put_device (dev->parent); } -static const struct attribute_group *enclosure_groups[]; +static const struct attribute_group *enclosure_component_groups[];/** * enclosure_component_register - add a particular component to an enclosure
@@ -282,7 +282,7 @@ enclosure_component_register(struct enclosure_device *edev,dev_set_name (cdev,"%u" , number); cdev->release = enclosure_component_release; - cdev->groups = enclosure_groups; + cdev->groups = enclosure_component_groups; err =device_register (cdev);if (err) {
@@ -365,25 +365,26 @@ EXPORT_SYMBOL_GPL(enclosure_remove_device);* sysfs pieces below */ -static ssize_t enclosure_show_components (struct device *cdev, -struct device_attribute *attr, -char *buf) +static ssize_t components_show (struct device *cdev, +struct device_attribute *attr,char *buf) {struct enclosure_device *edev =to_enclosure_device (cdev);return snprintf (buf,40 ,"%d\n" , edev->components); } +static DEVICE_ATTR_RO (components); -static struct device_attribute enclosure_attrs[] = { -__ATTR (components,S_IRUGO , enclosure_show_components,NULL ), - __ATTR_NULL +static struct attribute *enclosure_class_attrs[] = { + &dev_attr_components.attr, +NULL , }; +ATTRIBUTE_GROUPS (enclosure_class);static struct class enclosure_class = { .name ="enclosure" , .owner =THIS_MODULE , .dev_release = enclosure_release, - .dev_attrs = enclosure_attrs, + .dev_groups = enclosure_class_groups, };static const char *const enclosure_status [] = {
@@ -536,15 +537,7 @@ static struct attribute *enclosure_component_attrs[] = { &dev_attr_type.attr, NULL }; - -static struct attribute_group enclosure_group = { - .attrs = enclosure_component_attrs, -}; - -static const struct attribute_group *enclosure_groups[] = { - &enclosure_group, -NULL -}; +ATTRIBUTE_GROUPS (enclosure_component);static int __init enclosure_init (void ) {
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Greg Kroah-Hartman
maintainerPATCH 14/36 PCI: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the PCI class code to use the correct field.
---
Bjorn, feel free to take this through your tree, or ACK it and I can take it through mine.
drivers/pci/pci-sysfs.c | 32 +++++++++++++++++++++----------- drivers/pci/pci.h | 2 +- drivers/pci/probe.c | 2 +- 3 files changed, 23 insertions(+), 13 deletions(-)
drivers/pci/pci-sysfs.c +21 -11
@@ -131,19 +131,19 @@ static ssize_t pci_bus_show_cpuaffinity(struct device *dev,return ret; } -static inline ssize_t pci_bus_show_cpumaskaffinity (struct device *dev, -struct device_attribute *attr, -char *buf) +static ssize_t cpuaffinity_show (struct device *dev, +struct device_attribute *attr,char *buf) {return pci_bus_show_cpuaffinity (dev,0 , attr, buf); } +static DEVICE_ATTR_RO (cpuaffinity); -static inline ssize_t pci_bus_show_cpulistaffinity (struct device *dev, -struct device_attribute *attr, -char *buf) +static ssize_t cpulistaffinity_show (struct device *dev, +struct device_attribute *attr,char *buf) {return pci_bus_show_cpuaffinity (dev,1 , attr, buf); } +static DEVICE_ATTR_RO (cpulistaffinity);/* show resources */ static ssize_t
@@ -379,6 +379,7 @@ dev_bus_rescan_store(struct device *dev, struct device_attribute *attr, }return count; } +static DEVICE_ATTR(rescan, (S_IWUSR|S_IWGRP), NULL, dev_bus_rescan_store);#if defined(CONFIG_PM_RUNTIME ) && defined(CONFIG_ACPI ) static ssize_t d3cold_allowed_store(struct device *dev,
@@ -514,11 +515,20 @@ struct device_attribute pci_dev_attrs[] = { __ATTR_NULL, }; -struct device_attribute pcibus_dev_attrs[] = { -__ATTR (rescan, (S_IWUSR |S_IWGRP ),NULL , dev_bus_rescan_store), -__ATTR (cpuaffinity,S_IRUGO , pci_bus_show_cpumaskaffinity,NULL ), -__ATTR (cpulistaffinity,S_IRUGO , pci_bus_show_cpulistaffinity,NULL ), - __ATTR_NULL, +static struct attribute *pcibus_attrs[] = { + &dev_attr_rescan.attr, + &dev_attr_cpuaffinity.attr, + &dev_attr_cpulistaffinity.attr, +NULL , +}; + +static const struct attribute_group pcibus_group = { + .attrs = pcibus_attrs, +}; + +const struct attribute_group *pcibus_groups[] = { + &pcibus_group, +NULL , }; static ssize_t
drivers/pci/pci.h +1 -1
@@ -151,7 +151,7 @@ static inline int pci_no_d1d2(struct pci_dev *dev) }extern struct device_attribute pci_dev_attrs[]; -extern struct device_attribute pcibus_dev_attrs[]; +extern const struct attribute_group *pcibus_groups[];extern struct device_type pci_dev_type;extern struct bus_attribute pci_bus_attrs[];
drivers/pci/probe.c +1 -1
@@ -96,7 +96,7 @@ static void release_pcibus_dev(struct device *dev)static struct class pcibus_class = { .name ="pci_bus" , .dev_release = &release_pcibus_dev, - .dev_attrs = pcibus_dev_attrs, + .dev_groups = pcibus_groups, };static int __init pcibus_class_init (void )
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Re: [PATCH 14/36] PCI: convert class code to use dev_groups
Quoted 10 lines · Greg Kroah-Hartman
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the PCI class code to use the correct field.Cc Bjorn Helgaas <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>---
Bjorn, feel free to take this through your tree, or ACK it and I can take it through mine.
Applied to my pci/misc branch for v3.12, thanks!
Quoted 99 lines
drivers/pci/pci-sysfs.c | 32 +++++++++++++++++++++----------- drivers/pci/pci.h | 2 +- drivers/pci/probe.c | 2 +- 3 files changed, 23 insertions(+), 13 deletions(-)drivers/pci/pci-sysfs.c +21
-11@@ -131,19 +131,19 @@ static ssize_t pci_bus_show_cpuaffinity(struct device *dev,return ret; } -static inline ssize_t pci_bus_show_cpumaskaffinity (struct device *dev, -struct device_attribute *attr, -char *buf) +static ssize_t cpuaffinity_show (struct device *dev, +struct device_attribute *attr,char *buf) {return pci_bus_show_cpuaffinity (dev,0 , attr, buf); } +static DEVICE_ATTR_RO (cpuaffinity); -static inline ssize_t pci_bus_show_cpulistaffinity (struct device *dev, -struct device_attribute *attr, -char *buf) +static ssize_t cpulistaffinity_show (struct device *dev, +struct device_attribute *attr,char *buf) {return pci_bus_show_cpuaffinity (dev,1 , attr, buf); } +static DEVICE_ATTR_RO (cpulistaffinity);/* show resources */ static ssize_t@@ -379,6 +379,7 @@ dev_bus_rescan_store(struct device *dev, struct device_attribute *attr, }return count; } +static DEVICE_ATTR(rescan, (S_IWUSR|S_IWGRP), NULL, dev_bus_rescan_store);#if defined(CONFIG_PM_RUNTIME ) && defined(CONFIG_ACPI ) static ssize_t d3cold_allowed_store(struct device *dev,@@ -514,11 +515,20 @@ struct device_attribute pci_dev_attrs[] = { __ATTR_NULL, }; -struct device_attribute pcibus_dev_attrs[] = { -__ATTR (rescan, (S_IWUSR |S_IWGRP ),NULL , dev_bus_rescan_store), -__ATTR (cpuaffinity,S_IRUGO , pci_bus_show_cpumaskaffinity,NULL ), -__ATTR (cpulistaffinity,S_IRUGO , pci_bus_show_cpulistaffinity,NULL ), - __ATTR_NULL, +static struct attribute *pcibus_attrs[] = { + &dev_attr_rescan.attr, + &dev_attr_cpuaffinity.attr, + &dev_attr_cpulistaffinity.attr, +NULL , +}; + +static const struct attribute_group pcibus_group = { + .attrs = pcibus_attrs, +}; + +const struct attribute_group *pcibus_groups[] = { + &pcibus_group, +NULL , }; static ssize_tdrivers/pci/pci.h +1
-1@@ -151,7 +151,7 @@ static inline int pci_no_d1d2(struct pci_dev *dev) }extern struct device_attribute pci_dev_attrs[]; -extern struct device_attribute pcibus_dev_attrs[]; +extern const struct attribute_group *pcibus_groups[];extern struct device_type pci_dev_type;extern struct bus_attribute pci_bus_attrs[];drivers/pci/probe.c +1
-1@@ -96,7 +96,7 @@ static void release_pcibus_dev(struct device *dev)static struct class pcibus_class = { .name ="pci_bus" , .dev_release = &release_pcibus_dev, - .dev_attrs = pcibus_dev_attrs, + .dev_groups = pcibus_groups, };static int __init pcibus_class_init (void )Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Greg Kroah-Hartman
maintainerPATCH 15/36 x86: wmi: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the wmi class code to use the correct field.
---
Matthew, feel free to take this through your tree, or ACK it and I can take it through mine.
drivers/platform/x86/wmi.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)
drivers/platform/x86/wmi.c +6 -4
@@ -693,11 +693,13 @@ static ssize_t modalias_show(struct device *dev, struct device_attribute *attr,return sprintf (buf,"wmi:%s\n" , guid_string); } +static DEVICE_ATTR_RO (modalias); -static struct device_attribute wmi_dev_attrs[] = { -__ATTR_RO (modalias), - __ATTR_NULL +static struct attribute *wmi_attrs[] = { + &dev_attr_modalias.attr, +NULL , }; +ATTRIBUTE_GROUPS (wmi);static int wmi_dev_uevent (struct device *dev,struct kobj_uevent_env *env) {
@@ -732,7 +734,7 @@ static struct class wmi_class = { .name = "wmi", .dev_release = wmi_dev_free, .dev_uevent = wmi_dev_uevent, - .dev_attrs = wmi_dev_attrs, + .dev_groups = wmi_groups, }; static int wmi_create_device(const struct guid_block *gblock,
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Greg Kroah-Hartman
maintainerPATCH 16/36 PPS: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the pps class code to use the correct field.
---
Rodolfo, feel free to take this through your tree, or ACK it and I can take it through mine.
drivers/pps/pps.c | 2 +- drivers/pps/sysfs.c | 55 +++++++++++++++++++++++++++++----------------- include/linux/pps_kernel.h | 2 +- 3 files changed, 37 insertions(+), 22 deletions(-)
drivers/pps/pps.c +1 -1
@@ -406,7 +406,7 @@ static int __init pps_init(void)pr_err ("failed to allocate class\n" );return PTR_ERR (pps_class); } - pps_class->dev_attrs = pps_attrs; + pps_class->dev_groups = pps_groups; err =alloc_chrdev_region (&pps_devt,0 ,PPS_MAX_SOURCES ,"pps" );if (err <0 ) {
drivers/pps/sysfs.c +35 -20
97 lines not on this page · raw message
include/linux/pps_kernel.h +1 -1
@@ -80,7 +80,7 @@ struct pps_device {* Global variables */ -extern struct device_attribute pps_attrs[]; +extern const struct attribute_group *pps_groups[];/* * Internal functions.
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Greg Kroah-Hartman
maintainerPATCH 17/36 PTP: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the ptp class code to use the correct field.
---
Richard, feel free to take this through your tree, or ACK it and I can take it through mine.
drivers/ptp/ptp_clock.c | 2 +- drivers/ptp/ptp_private.h | 2 +- drivers/ptp/ptp_sysfs.c | 51 +++++++++++++++++++++++++++-------------------- 3 files changed, 31 insertions(+), 24 deletions(-)
drivers/ptp/ptp_clock.c +1 -1
@@ -330,7 +330,7 @@ static int __init ptp_init(void) goto no_region; } - ptp_class->dev_attrs = ptp_dev_attrs; + ptp_class->dev_groups = ptp_groups;pr_info ("PTP clock support registered\n" );return 0 ;
drivers/ptp/ptp_private.h +1 -1
@@ -84,7 +84,7 @@ uint ptp_poll(struct posix_clock *pc,* see ptp_sysfs.c */ -extern struct device_attribute ptp_dev_attrs[]; +extern const struct attribute_group *ptp_groups[];int ptp_cleanup_sysfs (struct ptp_clock *ptp);
drivers/ptp/ptp_sysfs.c +29 -22
65 lines not on this page · raw message
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Re: [PATCH 17/36] PTP: convert class code to use dev_groups
Quoted 10 lines · Greg Kroah-Hartman
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the ptp class code to use the correct field.Cc Richard Cochran <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>---
Richard, feel free to take this through your tree, or ACK it and I can take it through mine.
Please take this through your tree, as the PHC stuff has no tree of its own, apart from the networking tree. I did also test this patch briefly.
Greg Kroah-Hartman
maintainerPATCH 18/36 regulator: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the regulator class code to use the correct field.
---
Mark, feel free to take this through your tree, or ACK it and I can take it through mine.
drivers/regulator/core.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-)
drivers/regulator/core.c +16 -12
@@ -323,13 +323,14 @@ static ssize_t regulator_uA_show(struct device *dev, } static DEVICE_ATTR(microamps, 0444, regulator_uA_show, NULL); -static ssize_t regulator_name_show (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t name_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct regulator_dev *rdev =dev_get_drvdata (dev);return sprintf (buf,"%s\n" ,rdev_get_name (rdev)); } +static DEVICE_ATTR_RO (name);static ssize_t regulator_print_opmode (char *buf,int mode) {
@@ -489,15 +490,16 @@ static ssize_t regulator_total_uA_show(struct device *dev, } static DEVICE_ATTR(requested_microamps, 0444, regulator_total_uA_show, NULL); -static ssize_t regulator_num_users_show (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t num_users_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct regulator_dev *rdev =dev_get_drvdata (dev);return sprintf (buf,"%d\n" , rdev->use_count); } +static DEVICE_ATTR_RO (num_users); -static ssize_t regulator_type_show (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t type_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct regulator_dev *rdev =dev_get_drvdata (dev);
@@ -509,6 +511,7 @@ static ssize_t regulator_type_show(struct device *dev, }return sprintf (buf,"unknown\n" ); } +static DEVICE_ATTR_RO (type);static ssize_t regulator_suspend_mem_uV_show (struct device *dev,struct device_attribute *attr,char *buf)
@@ -632,12 +635,13 @@ static DEVICE_ATTR(bypass, 0444,* These are the only attributes are present for all regulators. * Other attributes are a function of regulator functionality. */ -static struct device_attribute regulator_dev_attrs[] = { -__ATTR (name,0444 , regulator_name_show,NULL ), -__ATTR (num_users,0444 , regulator_num_users_show,NULL ), -__ATTR (type,0444 , regulator_type_show,NULL ), - __ATTR_NULL, +static struct attribute *regulator_dev_attrs[] = { + &dev_attr_name.attr, + &dev_attr_num_users.attr, + &dev_attr_type.attr, +NULL , }; +ATTRIBUTE_GROUPS (regulator_dev);static void regulator_dev_release (struct device *dev) {
@@ -648,7 +652,7 @@ static void regulator_dev_release(struct device *dev)static struct class regulator_class = { .name ="regulator" , .dev_release = regulator_dev_release, - .dev_attrs = regulator_dev_attrs, + .dev_groups = regulator_dev_groups, };/* Calculate the new optimum regulator operating mode based on the new total
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Re: [PATCH 18/36] regulator: convert class code to use dev_groups
Quoted 3 lines · Greg Kroah-Hartman
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the regulator class code to use the correct field.
Applied, thanks.
Greg Kroah-Hartman
maintainerPATCH 19/36 rtc: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the rtc class code to use the correct field.
---
Alessandro, feel free to take this through your tree, or ACK it and I can take it through mine.
drivers/rtc/rtc-sysfs.c | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-)
drivers/rtc/rtc-sysfs.c +24 -24
@@ -25,15 +25,14 @@*/ static ssize_t -rtc_sysfs_show_name (struct device *dev,struct device_attribute *attr, -char *buf) +name_show (struct device *dev,struct device_attribute *attr,char *buf) {return sprintf (buf,"%s\n" ,to_rtc_device (dev)->name); } +static DEVICE_ATTR_RO (name);static ssize_t -rtc_sysfs_show_date (struct device *dev,struct device_attribute *attr, -char *buf) +date_show (struct device *dev,struct device_attribute *attr,char *buf) {ssize_t retval;struct rtc_time tm;
@@ -46,10 +45,10 @@ rtc_sysfs_show_date(struct device *dev, struct device_attribute *attr,return retval; } +static DEVICE_ATTR_RO (date);static ssize_t -rtc_sysfs_show_time (struct device *dev,struct device_attribute *attr, -char *buf) +time_show (struct device *dev,struct device_attribute *attr,char *buf) {ssize_t retval;struct rtc_time tm;
@@ -62,10 +61,10 @@ rtc_sysfs_show_time(struct device *dev, struct device_attribute *attr,return retval; } +static DEVICE_ATTR_RO (time);static ssize_t -rtc_sysfs_show_since_epoch (struct device *dev,struct device_attribute *attr, -char *buf) +since_epoch_show (struct device *dev,struct device_attribute *attr,char *buf) {ssize_t retval;struct rtc_time tm;
@@ -79,16 +78,16 @@ rtc_sysfs_show_since_epoch(struct device *dev, struct device_attribute *attr,return retval; } +static DEVICE_ATTR_RO (since_epoch);static ssize_t -rtc_sysfs_show_max_user_freq (struct device *dev,struct device_attribute *attr, -char *buf) +max_user_freq_show (struct device *dev,struct device_attribute *attr,char *buf) {return sprintf (buf,"%d\n" ,to_rtc_device (dev)->max_user_freq); }static ssize_t -rtc_sysfs_set_max_user_freq (struct device *dev,struct device_attribute *attr, +max_user_freq_store (struct device *dev,struct device_attribute *attr,const char *buf,size_t n) {struct rtc_device *rtc =to_rtc_device (dev);
@@ -101,6 +100,7 @@ rtc_sysfs_set_max_user_freq(struct device *dev, struct device_attribute *attr,return n; } +static DEVICE_ATTR_RW (max_user_freq);/** * rtc_sysfs_show_hctosys - indicate if the given RTC set the system time
@@ -109,8 +109,7 @@ rtc_sysfs_set_max_user_freq(struct device *dev, struct device_attribute *attr,* boot or resume event. */ static ssize_t -rtc_sysfs_show_hctosys (struct device *dev,struct device_attribute *attr, -char *buf) +hctosys_show (struct device *dev,struct device_attribute *attr,char *buf) {#ifdef CONFIG_RTC_HCTOSYS_DEVICE if (rtc_hctosys_ret == 0 &&
@@ -121,17 +120,18 @@ rtc_sysfs_show_hctosys(struct device *dev, struct device_attribute *attr,#endif return sprintf (buf,"0\n" ); } - -static struct device_attribute rtc_attrs[] = { -__ATTR (name,S_IRUGO , rtc_sysfs_show_name,NULL ), -__ATTR (date,S_IRUGO , rtc_sysfs_show_date,NULL ), -__ATTR (time,S_IRUGO , rtc_sysfs_show_time,NULL ), -__ATTR (since_epoch,S_IRUGO , rtc_sysfs_show_since_epoch,NULL ), -__ATTR (max_user_freq,S_IRUGO |S_IWUSR , rtc_sysfs_show_max_user_freq, - rtc_sysfs_set_max_user_freq), -__ATTR (hctosys,S_IRUGO , rtc_sysfs_show_hctosys,NULL ), - { }, +static DEVICE_ATTR_RO (hctosys); + +static struct attribute *rtc_attrs[] = { + &dev_attr_name.attr, + &dev_attr_date.attr, + &dev_attr_time.attr, + &dev_attr_since_epoch.attr, + &dev_attr_max_user_freq.attr, + &dev_attr_hctosys.attr, +NULL , }; +ATTRIBUTE_GROUPS (rtc); static ssize_t rtc_sysfs_show_wakealarm(struct device *dev, struct device_attribute *attr,
@@ -261,5 +261,5 @@ void rtc_sysfs_del_device(struct rtc_device *rtc)void __init rtc_sysfs_init (struct class *rtc_class) { - rtc_class->dev_attrs = rtc_attrs; + rtc_class->dev_groups = rtc_groups; }
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Re: [PATCH 19/36] rtc: convert class code to use dev_groups
Quoted 10 lines · On Wed, 24 Jul 2013 15:05:22 -0700 Greg Kroah-Hartman…
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the rtc class code to use the correct field.Cc Alessandro Zummo <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>---
Alessandro, feel free to take this through your tree, or ACK it and I can take it through mine.
I'd appreciate if you can carry it.
Signature · 6 lines
Best regards, Alessandro Zummo, Tower Technologies - Torino, Italy http://www.towertech.it
Greg Kroah-Hartman
maintainerPATCH 20/36 UIO: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the uio class code to use the correct field.
--- drivers/uio/uio.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-)
drivers/uio/uio.c +13 -9
@@ -224,38 +224,42 @@ static struct kobj_type portio_attr_type = { .default_attrs = portio_attrs, }; -static ssize_t show_name (struct device *dev, +static ssize_t name_show (struct device *dev,struct device_attribute *attr,char *buf) {struct uio_device *idev =dev_get_drvdata (dev);return sprintf (buf,"%s\n" , idev->info->name); } +static DEVICE_ATTR_RO (name); -static ssize_t show_version (struct device *dev, +static ssize_t version_show (struct device *dev,struct device_attribute *attr,char *buf) {struct uio_device *idev =dev_get_drvdata (dev);return sprintf (buf,"%s\n" , idev->info->version); } +static DEVICE_ATTR_RO (version); -static ssize_t show_event (struct device *dev, +static ssize_t event_show (struct device *dev,struct device_attribute *attr,char *buf) {struct uio_device *idev =dev_get_drvdata (dev);return sprintf (buf,"%u\n" , (unsigned int )atomic_read (&idev->event)); } +static DEVICE_ATTR_RO (event); -static struct device_attribute uio_class_attributes[] = { -__ATTR (name,S_IRUGO , show_name,NULL ), -__ATTR (version,S_IRUGO , show_version,NULL ), -__ATTR (event,S_IRUGO , show_event,NULL ), - {} +static struct attribute *uio_attrs[] = { + &dev_attr_name.attr, + &dev_attr_version.attr, + &dev_attr_event.attr, +NULL , }; +ATTRIBUTE_GROUPS (uio);/* UIO class infrastructure */ static struct class uio_class = { .name ="uio" , - .dev_attrs = uio_class_attributes, + .dev_groups = uio_groups, };/*
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Greg Kroah-Hartman
maintainerPATCH 21/36 cuse: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the cuse class code to use the correct field.
---
Miklos, feel free to take this through your tree, or ACK it and I can take it through mine.
fs/fuse/cuse.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-)
fs/fuse/cuse.c +8 -5
@@ -568,6 +568,7 @@ static ssize_t cuse_class_waiting_show(struct device *dev,return sprintf (buf,"%d\n" ,atomic_read (&cc->fc.num_waiting)); } +static DEVICE_ATTR(waiting, S_IFREG | 0400, cuse_class_waiting_show, NULL); static ssize_t cuse_class_abort_store(struct device *dev, struct device_attribute *attr,
@@ -578,12 +579,14 @@ static ssize_t cuse_class_abort_store(struct device *dev,fuse_abort_conn (&cc->fc);return count; } +static DEVICE_ATTR(abort, S_IFREG | 0200, NULL, cuse_class_abort_store); -static struct device_attribute cuse_class_dev_attrs[] = { -__ATTR (waiting,S_IFREG |0400 , cuse_class_waiting_show,NULL ), -__ATTR (abort,S_IFREG |0200 ,NULL , cuse_class_abort_store), - { } +static struct attribute *cuse_class_dev_attrs[] = { + &dev_attr_waiting.attr, + &dev_attr_abort.attr, +NULL , }; +ATTRIBUTE_GROUPS (cuse_class_dev);static struct miscdevice cuse_miscdev = { .minor =MISC_DYNAMIC_MINOR ,
@@ -609,7 +612,7 @@ static int __init cuse_init(void)if (IS_ERR (cuse_class))return PTR_ERR (cuse_class); - cuse_class->dev_attrs = cuse_class_dev_attrs; + cuse_class->dev_groups = cuse_class_dev_groups; rc =misc_register (&cuse_miscdev);if (rc) {
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Re: [PATCH 21/36] cuse: convert class code to use dev_groups
Quoted 10 lines · Greg Kroah-Hartman
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the cuse class code to use the correct field.Cc Miklos Szeredi <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>---
Miklos, feel free to take this through your tree, or ACK it and I can take it through mine.
Thanks, Greg. Please take it through your tree.
Thanks,
Miklos
Quoted 47 lines
fs/fuse/cuse.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-)fs/fuse/cuse.c +8
-6@@ -568,6 +568,7 @@ static ssize_t cuse_class_waiting_show(struct device *dev,return sprintf (buf,"%d\n" ,atomic_read (&cc->fc.num_waiting)); } +static DEVICE_ATTR(waiting, S_IFREG | 0400, cuse_class_waiting_show, NULL); static ssize_t cuse_class_abort_store(struct device *dev, struct device_attribute *attr,@@ -578,12 +579,14 @@ static ssize_t cuse_class_abort_store(struct device *dev,fuse_abort_conn (&cc->fc);return count; } +static DEVICE_ATTR(abort, S_IFREG | 0200, NULL, cuse_class_abort_store); -static struct device_attribute cuse_class_dev_attrs[] = { -__ATTR (waiting,S_IFREG |0400 , cuse_class_waiting_show,NULL ), -__ATTR (abort,S_IFREG |0200 ,NULL , cuse_class_abort_store), - { } +static struct attribute *cuse_class_dev_attrs[] = { + &dev_attr_waiting.attr, + &dev_attr_abort.attr, +NULL , }; +ATTRIBUTE_GROUPS (cuse_class_dev);static struct miscdevice cuse_miscdev = { .minor =MISC_DYNAMIC_MINOR ,@@ -609,7 +612,7 @@ static int __init cuse_init(void)if (IS_ERR (cuse_class))return PTR_ERR (cuse_class); - cuse_class->dev_attrs = cuse_class_dev_attrs; + cuse_class->dev_groups = cuse_class_dev_groups; rc =misc_register (&cuse_miscdev);if (rc) { --1.8.3.rc0.20.gb99dd2e
Greg Kroah-Hartman
maintainerPATCH 22/36 staging: comedi: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the comedi class code to use the correct field.
--- drivers/staging/comedi/comedi_fops.c | 39 ++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 19 deletions(-)
drivers/staging/comedi/comedi_fops.c +20 -19
@@ -262,7 +262,7 @@ static int resize_async_buffer(struct comedi_device *dev,/* sysfs attribute files */ -static ssize_t show_max_read_buffer_kb (struct device *csdev, +static ssize_t max_read_buffer_kb_show (struct device *csdev,struct device_attribute *attr,char *buf) {unsigned int minor =MINOR (csdev->devt);
@@ -283,7 +283,7 @@ static ssize_t show_max_read_buffer_kb(struct device *csdev,return snprintf (buf,PAGE_SIZE ,"%i\n" , size); } -static ssize_t store_max_read_buffer_kb (struct device *csdev, +static ssize_t max_read_buffer_kb_store (struct device *csdev,struct device_attribute *attr,const char *buf,size_t count) {
@@ -314,8 +314,9 @@ static ssize_t store_max_read_buffer_kb(struct device *csdev,return err ? err : count; } +static DEVICE_ATTR_RW (max_read_buffer_kb); -static ssize_t show_read_buffer_kb (struct device *csdev, +static ssize_t read_buffer_kb_show (struct device *csdev,struct device_attribute *attr,char *buf) {unsigned int minor =MINOR (csdev->devt);
@@ -336,7 +337,7 @@ static ssize_t show_read_buffer_kb(struct device *csdev,return snprintf (buf,PAGE_SIZE ,"%i\n" , size); } -static ssize_t store_read_buffer_kb (struct device *csdev, +static ssize_t read_buffer_kb_store (struct device *csdev,struct device_attribute *attr,const char *buf,size_t count) {
@@ -367,8 +368,9 @@ static ssize_t store_read_buffer_kb(struct device *csdev,return err ? err : count; } +static DEVICE_ATTR_RW (read_buffer_kb); -static ssize_t show_max_write_buffer_kb (struct device *csdev, +static ssize_t max_write_buffer_kb_show (struct device *csdev,struct device_attribute *attr,char *buf) {
@@ -390,7 +392,7 @@ static ssize_t show_max_write_buffer_kb(struct device *csdev,return snprintf (buf,PAGE_SIZE ,"%i\n" , size); } -static ssize_t store_max_write_buffer_kb (struct device *csdev, +static ssize_t max_write_buffer_kb_store (struct device *csdev,struct device_attribute *attr,const char *buf,size_t count) {
@@ -421,8 +423,9 @@ static ssize_t store_max_write_buffer_kb(struct device *csdev,return err ? err : count; } +static DEVICE_ATTR_RW (max_write_buffer_kb); -static ssize_t show_write_buffer_kb (struct device *csdev, +static ssize_t write_buffer_kb_show (struct device *csdev,struct device_attribute *attr,char *buf) {unsigned int minor =MINOR (csdev->devt);
@@ -443,7 +446,7 @@ static ssize_t show_write_buffer_kb(struct device *csdev,return snprintf (buf,PAGE_SIZE ,"%i\n" , size); } -static ssize_t store_write_buffer_kb (struct device *csdev, +static ssize_t write_buffer_kb_store (struct device *csdev,struct device_attribute *attr,const char *buf,size_t count) {
@@ -474,18 +477,16 @@ static ssize_t store_write_buffer_kb(struct device *csdev,return err ? err : count; } +static DEVICE_ATTR_RW (write_buffer_kb); -static struct device_attribute comedi_dev_attrs[] = { -__ATTR (max_read_buffer_kb,S_IRUGO |S_IWUSR , - show_max_read_buffer_kb, store_max_read_buffer_kb), -__ATTR (read_buffer_kb,S_IRUGO |S_IWUSR |S_IWGRP , - show_read_buffer_kb, store_read_buffer_kb), -__ATTR (max_write_buffer_kb,S_IRUGO |S_IWUSR , - show_max_write_buffer_kb, store_max_write_buffer_kb), -__ATTR (write_buffer_kb,S_IRUGO |S_IWUSR |S_IWGRP , - show_write_buffer_kb, store_write_buffer_kb), - __ATTR_NULL +static struct attribute *comedi_dev_attrs[] = { + &dev_attr_max_read_buffer_kb.attr, + &dev_attr_read_buffer_kb.attr, + &dev_attr_max_write_buffer_kb.attr, + &dev_attr_write_buffer_kb.attr, +NULL , }; +ATTRIBUTE_GROUPS (comedi_dev);static void comedi_set_subdevice_runflags (struct comedi_subdevice *s,unsigned mask,unsigned bits)
@@ -2554,7 +2555,7 @@ static int __init comedi_init(void)return PTR_ERR (comedi_class); } - comedi_class->dev_attrs = comedi_dev_attrs; + comedi_class->dev_groups = comedi_dev_groups;/* XXX requires /proc interface */ comedi_proc_init ();
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
RE: [PATCH 22/36] staging: comedi: convert class code to use dev_groups
Quoted 11 lines · Greg Kroah-Hartman
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the comedi class code to use the correct field.Cc Ian Abbott <[email protected]>Cc H Hartley Sweeten <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>--- drivers/staging/comedi/comedi_fops.c | 39 ++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 19 deletions(-)
Looks good to me. Not sure what my sign off should be so take your pick.
Greg Kroah-Hartman
maintainerRe: [PATCH 22/36] staging: comedi: convert class code to use dev_groups
Quoted 13 lines · H Hartley Sweeten
Quoted 11 lines · Greg Kroah-Hartman
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the comedi class code to use the correct field.Cc Ian Abbott <[email protected]>Cc H Hartley Sweeten <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>--- drivers/staging/comedi/comedi_fops.c | 39 ++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 19 deletions(-)
Quoted 5 lines
Looks good to me. Not sure what my sign off should be so take your pick.
Reviewed-by H Hartley Sweeten <[email protected]>
Thanks, I'll take both :)
greg k-h
Greg Kroah-Hartman
maintainerPATCH 23/36 backing-dev: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the backing device class code to use the correct field.
---
Andres, feel free to take this through your tree, or ACK it and I can take it through mine.
mm/backing-dev.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-)
mm/backing-dev.c +11 -8
@@ -180,7 +180,8 @@ static ssize_t name##_show(struct device *dev, \struct backing_dev_info *bdi =dev_get_drvdata (dev); \ \return snprintf (page,PAGE_SIZE -1 ,"%lld\n" , (long long )expr); \ -} +} \ +static DEVICE_ATTR_RW (name);BDI_SHOW (read_ahead_kb,K (bdi->ra_pages))
@@ -231,14 +232,16 @@ static ssize_t stable_pages_required_show(struct device *dev,return snprintf (page,PAGE_SIZE -1 ,"%d\n" ,bdi_cap_stable_pages_required (bdi) ?1 :0 ); } +static DEVICE_ATTR_RO (stable_pages_required); -static struct device_attribute bdi_dev_attrs[] = { -__ATTR_RW (read_ahead_kb), -__ATTR_RW (min_ratio), -__ATTR_RW (max_ratio), -__ATTR_RO (stable_pages_required), - __ATTR_NULL, +static struct attribute *bdi_dev_attrs[] = { + &dev_attr_read_ahead_kb.attr, + &dev_attr_min_ratio.attr, + &dev_attr_max_ratio.attr, + &dev_attr_stable_pages_required.attr, +NULL , }; +ATTRIBUTE_GROUPS (bdi_dev);static __init int bdi_class_init (void ) {
@@ -246,7 +249,7 @@ static __init int bdi_class_init(void)if (IS_ERR (bdi_class))return PTR_ERR (bdi_class); - bdi_class->dev_attrs = bdi_dev_attrs; + bdi_class->dev_groups = bdi_dev_groups;bdi_debug_init ();return 0 ; }
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Greg Kroah-Hartman
maintainerPATCH 24/36 SCSI: OSD: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the scsi osd class code to use the correct field.
---
James, feel free to take this through your tree, or ACK it and I can take it through mine.
drivers/scsi/osd/osd_uld.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-)
drivers/scsi/osd/osd_uld.c +8 -5
@@ -107,6 +107,7 @@ static ssize_t osdname_show(struct device *dev, struct device_attribute *attr, class_dev);return sprintf (buf,"%s\n" , ould->odi.osdname); } +static DEVICE_ATTR_RO (osdname);static ssize_t systemid_show (struct device *dev,struct device_attribute *attr,char *buf)
@@ -117,17 +118,19 @@ static ssize_t systemid_show(struct device *dev, struct device_attribute *attr,memcpy (buf, ould->odi.systemid, ould->odi.systemid_len);return ould->odi.systemid_len; } +static DEVICE_ATTR_RO (systemid); -static struct device_attribute osd_uld_attrs[] = { -__ATTR (osdname,S_IRUGO , osdname_show,NULL ), -__ATTR (systemid,S_IRUGO , systemid_show,NULL ), - __ATTR_NULL, +static struct attribute *osd_uld_attrs[] = { + &dev_attr_osdname.attr, + &dev_attr_systemid.attr, +NULL , }; +ATTRIBUTE_GROUPS (osd_uld);static struct class osd_uld_class = { .owner =THIS_MODULE , .name ="scsi_osd" , - .dev_attrs = osd_uld_attrs, + .dev_groups = osd_uld_groups, };/*
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Re: [PATCH 24/36] SCSI: OSD: convert class code to use dev_groups
Quoted 5 lines · Greg Kroah-Hartman
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the scsi osd class code to use the correct field.Cc Boaz Harrosh <[email protected]>
Cool Thanks
Quoted 49 lines
Cc Benny Halevy <[email protected]>Cc James E.J. Bottomley <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>---
James, feel free to take this through your tree, or ACK it and I can take it through mine.
drivers/scsi/osd/osd_uld.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-)drivers/scsi/osd/osd_uld.c +8
-5@@ -107,6 +107,7 @@ static ssize_t osdname_show(struct device *dev, struct device_attribute *attr, class_dev);return sprintf (buf,"%s\n" , ould->odi.osdname); } +static DEVICE_ATTR_RO (osdname);static ssize_t systemid_show (struct device *dev,struct device_attribute *attr,char *buf)@@ -117,17 +118,19 @@ static ssize_t systemid_show(struct device *dev, struct device_attribute *attr,memcpy (buf, ould->odi.systemid, ould->odi.systemid_len);return ould->odi.systemid_len; } +static DEVICE_ATTR_RO (systemid); -static struct device_attribute osd_uld_attrs[] = { -__ATTR (osdname,S_IRUGO , osdname_show,NULL ), -__ATTR (systemid,S_IRUGO , systemid_show,NULL ), - __ATTR_NULL, +static struct attribute *osd_uld_attrs[] = { + &dev_attr_osdname.attr, + &dev_attr_systemid.attr, +NULL , }; +ATTRIBUTE_GROUPS (osd_uld);static struct class osd_uld_class = { .owner =THIS_MODULE , .name ="scsi_osd" , - .dev_attrs = osd_uld_attrs, + .dev_groups = osd_uld_groups, };/*
Greg Kroah-Hartman
maintainerPATCH 25/36 SCSI: sd: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the scsi disk class code to use the correct field.
It required some functions to be moved around to place the show and store functions next to each other, the old order seemed to make no sense at all.
---
James, feel free to take this through your tree, or ACK it and I can take it through mine.
drivers/scsi/sd.c | 149 +++++++++++++++++++++++++++--------------------------- 1 file changed, 75 insertions(+), 74 deletions(-)
drivers/scsi/sd.c +75 -74
@@ -132,8 +132,8 @@ static const char *sd_cache_types[] = { };static ssize_t -sd_store_cache_type (struct device *dev,struct device_attribute *attr, -const char *buf,size_t count) +cache_type_store (struct device *dev,struct device_attribute *attr, +const char *buf,size_t count) {int i, ct =-1 , rcd, wce, sp;struct scsi_disk *sdkp =to_scsi_disk (dev);
@@ -199,8 +199,18 @@ sd_store_cache_type(struct device *dev, struct device_attribute *attr, }static ssize_t -sd_store_manage_start_stop (struct device *dev,struct device_attribute *attr, -const char *buf,size_t count) +manage_start_stop_show (struct device *dev,struct device_attribute *attr, +char *buf) +{ +struct scsi_disk *sdkp =to_scsi_disk (dev); +struct scsi_device *sdp = sdkp->device; + +return snprintf (buf,20 ,"%u\n" , sdp->manage_start_stop); +} + +static ssize_t +manage_start_stop_store (struct device *dev,struct device_attribute *attr, +const char *buf,size_t count) {struct scsi_disk *sdkp =to_scsi_disk (dev);struct scsi_device *sdp = sdkp->device;
@@ -212,10 +222,19 @@ sd_store_manage_start_stop(struct device *dev, struct device_attribute *attr,return count; } +static DEVICE_ATTR_RW (manage_start_stop);static ssize_t -sd_store_allow_restart (struct device *dev,struct device_attribute *attr, -const char *buf,size_t count) +allow_restart_show (struct device *dev,struct device_attribute *attr,char *buf) +{ +struct scsi_disk *sdkp =to_scsi_disk (dev); + +return snprintf (buf,40 ,"%d\n" , sdkp->device->allow_restart); +} + +static ssize_t +allow_restart_store (struct device *dev,struct device_attribute *attr, +const char *buf,size_t count) {struct scsi_disk *sdkp =to_scsi_disk (dev);struct scsi_device *sdp = sdkp->device;
@@ -230,47 +249,30 @@ sd_store_allow_restart(struct device *dev, struct device_attribute *attr,return count; } +static DEVICE_ATTR_RW (allow_restart);static ssize_t -sd_show_cache_type (struct device *dev,struct device_attribute *attr, -char *buf) +cache_type_show (struct device *dev,struct device_attribute *attr,char *buf) {struct scsi_disk *sdkp =to_scsi_disk (dev);int ct = sdkp->RCD +2 *sdkp->WCE;return snprintf (buf,40 ,"%s\n" , sd_cache_types[ct]); } +static DEVICE_ATTR_RW (cache_type);static ssize_t -sd_show_fua (struct device *dev,struct device_attribute *attr,char *buf) +FUA_show (struct device *dev,struct device_attribute *attr,char *buf) {struct scsi_disk *sdkp =to_scsi_disk (dev);return snprintf (buf,20 ,"%u\n" , sdkp->DPOFUA); } +static DEVICE_ATTR_RO (FUA );static ssize_t -sd_show_manage_start_stop (struct device *dev,struct device_attribute *attr, -char *buf) -{ -struct scsi_disk *sdkp =to_scsi_disk (dev); -struct scsi_device *sdp = sdkp->device; - -return snprintf (buf,20 ,"%u\n" , sdp->manage_start_stop); -} - -static ssize_t -sd_show_allow_restart (struct device *dev,struct device_attribute *attr, -char *buf) -{ -struct scsi_disk *sdkp =to_scsi_disk (dev); - -return snprintf (buf,40 ,"%d\n" , sdkp->device->allow_restart); -} - -static ssize_t -sd_show_protection_type (struct device *dev,struct device_attribute *attr, -char *buf) +protection_type_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct scsi_disk *sdkp =to_scsi_disk (dev);
@@ -278,8 +280,8 @@ sd_show_protection_type(struct device *dev, struct device_attribute *attr, }static ssize_t -sd_store_protection_type (struct device *dev,struct device_attribute *attr, -const char *buf,size_t count) +protection_type_store (struct device *dev,struct device_attribute *attr, +const char *buf,size_t count) {struct scsi_disk *sdkp =to_scsi_disk (dev);unsigned int val;
@@ -298,10 +300,11 @@ sd_store_protection_type(struct device *dev, struct device_attribute *attr,return count; } +static DEVICE_ATTR_RW (protection_type);static ssize_t -sd_show_protection_mode (struct device *dev,struct device_attribute *attr, -char *buf) +protection_mode_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct scsi_disk *sdkp =to_scsi_disk (dev);struct scsi_device *sdp = sdkp->device;
@@ -320,24 +323,26 @@ sd_show_protection_mode(struct device *dev, struct device_attribute *attr,return snprintf (buf,20 ,"%s%u\n" , dix ?"dix" :"dif" , dif); } +static DEVICE_ATTR_RO (protection_mode);static ssize_t -sd_show_app_tag_own (struct device *dev,struct device_attribute *attr, -char *buf) +app_tag_own_show (struct device *dev,struct device_attribute *attr,char *buf) {struct scsi_disk *sdkp =to_scsi_disk (dev);return snprintf (buf,20 ,"%u\n" , sdkp->ATO); } +static DEVICE_ATTR_RO (app_tag_own);static ssize_t -sd_show_thin_provisioning (struct device *dev,struct device_attribute *attr, -char *buf) +thin_provisioning_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct scsi_disk *sdkp =to_scsi_disk (dev);return snprintf (buf,20 ,"%u\n" , sdkp->lbpme); } +static DEVICE_ATTR_RO (thin_provisioning);static const char *lbp_mode[] = { [SD_LBP_FULL ] ="full" ,
@@ -349,8 +354,8 @@ static const char *lbp_mode[] = { };static ssize_t -sd_show_provisioning_mode (struct device *dev,struct device_attribute *attr, -char *buf) +provisioning_mode_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct scsi_disk *sdkp =to_scsi_disk (dev);
@@ -358,8 +363,8 @@ sd_show_provisioning_mode(struct device *dev, struct device_attribute *attr, }static ssize_t -sd_store_provisioning_mode (struct device *dev,struct device_attribute *attr, -const char *buf,size_t count) +provisioning_mode_store (struct device *dev,struct device_attribute *attr, +const char *buf,size_t count) {struct scsi_disk *sdkp =to_scsi_disk (dev);struct scsi_device *sdp = sdkp->device;
@@ -385,10 +390,11 @@ sd_store_provisioning_mode(struct device *dev, struct device_attribute *attr,return count; } +static DEVICE_ATTR_RW (provisioning_mode);static ssize_t -sd_show_max_medium_access_timeouts (struct device *dev, -struct device_attribute *attr,char *buf) +max_medium_access_timeouts_show (struct device *dev, +struct device_attribute *attr,char *buf) {struct scsi_disk *sdkp =to_scsi_disk (dev);
@@ -396,9 +402,9 @@ sd_show_max_medium_access_timeouts(struct device *dev, }static ssize_t -sd_store_max_medium_access_timeouts (struct device *dev, -struct device_attribute *attr, -const char *buf,size_t count) +max_medium_access_timeouts_store (struct device *dev, +struct device_attribute *attr,const char *buf, +size_t count) {struct scsi_disk *sdkp =to_scsi_disk (dev);int err;
@@ -410,10 +416,11 @@ sd_store_max_medium_access_timeouts(struct device *dev,return err ? err : count; } +static DEVICE_ATTR_RW (max_medium_access_timeouts);static ssize_t -sd_show_write_same_blocks (struct device *dev,struct device_attribute *attr, -char *buf) +max_write_same_blocks_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct scsi_disk *sdkp =to_scsi_disk (dev);
@@ -421,8 +428,8 @@ sd_show_write_same_blocks(struct device *dev, struct device_attribute *attr, }static ssize_t -sd_store_write_same_blocks (struct device *dev,struct device_attribute *attr, -const char *buf,size_t count) +max_write_same_blocks_store (struct device *dev,struct device_attribute *attr, +const char *buf,size_t count) {struct scsi_disk *sdkp =to_scsi_disk (dev);struct scsi_device *sdp = sdkp->device;
@@ -451,35 +458,29 @@ sd_store_write_same_blocks(struct device *dev, struct device_attribute *attr,return count; } - -static struct device_attribute sd_disk_attrs[] = { -__ATTR (cache_type,S_IRUGO |S_IWUSR , sd_show_cache_type, - sd_store_cache_type), -__ATTR (FUA ,S_IRUGO , sd_show_fua,NULL ), -__ATTR (allow_restart,S_IRUGO |S_IWUSR , sd_show_allow_restart, - sd_store_allow_restart), -__ATTR (manage_start_stop,S_IRUGO |S_IWUSR , sd_show_manage_start_stop, - sd_store_manage_start_stop), -__ATTR (protection_type,S_IRUGO |S_IWUSR , sd_show_protection_type, - sd_store_protection_type), -__ATTR (protection_mode,S_IRUGO , sd_show_protection_mode,NULL ), -__ATTR (app_tag_own,S_IRUGO , sd_show_app_tag_own,NULL ), -__ATTR (thin_provisioning,S_IRUGO , sd_show_thin_provisioning,NULL ), -__ATTR (provisioning_mode,S_IRUGO |S_IWUSR , sd_show_provisioning_mode, - sd_store_provisioning_mode), -__ATTR (max_write_same_blocks,S_IRUGO |S_IWUSR , - sd_show_write_same_blocks, sd_store_write_same_blocks), -__ATTR (max_medium_access_timeouts,S_IRUGO |S_IWUSR , - sd_show_max_medium_access_timeouts, - sd_store_max_medium_access_timeouts), - __ATTR_NULL, +static DEVICE_ATTR_RW (max_write_same_blocks); + +static struct attribute *sd_disk_attrs[] = { + &dev_attr_cache_type.attr, + &dev_attr_FUA.attr, + &dev_attr_allow_restart.attr, + &dev_attr_manage_start_stop.attr, + &dev_attr_protection_type.attr, + &dev_attr_protection_mode.attr, + &dev_attr_app_tag_own.attr, + &dev_attr_thin_provisioning.attr, + &dev_attr_provisioning_mode.attr, + &dev_attr_max_write_same_blocks.attr, + &dev_attr_max_medium_access_timeouts.attr, +NULL , }; +ATTRIBUTE_GROUPS (sd_disk);static struct class sd_disk_class = { .name ="scsi_disk" , .owner =THIS_MODULE , .dev_release = scsi_disk_release, - .dev_attrs = sd_disk_attrs, + .dev_groups = sd_disk_groups, };static const struct dev_pm_ops sd_pm_ops = {
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Re: [PATCH 25/36] SCSI: sd: convert class code to use dev_groups
Quoted 8 lines · Greg Kroah-Hartman
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the scsi disk class code to use the correct field.It required some functions to be moved around to place the show and store functions next to each other, the old order seemed to make no sense at all.
Quoted 6 lines
Cc James E.J. Bottomley <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>---
James, feel free to take this through your tree, or ACK it and I can take it through mine.
Just found this ... I have the stable folder rule be git-send-email and from you, so it picks up your patches as well.
I'll take it through my tree, just in case we're mucking about with attributes this cycle around.
Thanks,
James
Quoted 299 lines
drivers/scsi/sd.c | 149 +++++++++++++++++++++++++++--------------------------- 1 file changed, 75 insertions(+), 74 deletions(-)drivers/scsi/sd.c +75
-74@@ -132,8 +132,8 @@ static const char *sd_cache_types[] = { };static ssize_t -sd_store_cache_type (struct device *dev,struct device_attribute *attr, -const char *buf,size_t count) +cache_type_store (struct device *dev,struct device_attribute *attr, +const char *buf,size_t count) {int i, ct =-1 , rcd, wce, sp;struct scsi_disk *sdkp =to_scsi_disk (dev);@@ -199,8 +199,18 @@ sd_store_cache_type(struct device *dev, struct device_attribute *attr, }static ssize_t -sd_store_manage_start_stop (struct device *dev,struct device_attribute *attr, -const char *buf,size_t count) +manage_start_stop_show (struct device *dev,struct device_attribute *attr, +char *buf) +{ +struct scsi_disk *sdkp =to_scsi_disk (dev); +struct scsi_device *sdp = sdkp->device; + +return snprintf (buf,20 ,"%u\n" , sdp->manage_start_stop); +} + +static ssize_t +manage_start_stop_store (struct device *dev,struct device_attribute *attr, +const char *buf,size_t count) {struct scsi_disk *sdkp =to_scsi_disk (dev);struct scsi_device *sdp = sdkp->device;@@ -212,10 +222,19 @@ sd_store_manage_start_stop(struct device *dev, struct device_attribute *attr,return count; } +static DEVICE_ATTR_RW (manage_start_stop);static ssize_t -sd_store_allow_restart (struct device *dev,struct device_attribute *attr, -const char *buf,size_t count) +allow_restart_show (struct device *dev,struct device_attribute *attr,char *buf) +{ +struct scsi_disk *sdkp =to_scsi_disk (dev); + +return snprintf (buf,40 ,"%d\n" , sdkp->device->allow_restart); +} + +static ssize_t +allow_restart_store (struct device *dev,struct device_attribute *attr, +const char *buf,size_t count) {struct scsi_disk *sdkp =to_scsi_disk (dev);struct scsi_device *sdp = sdkp->device;@@ -230,47 +249,30 @@ sd_store_allow_restart(struct device *dev, struct device_attribute *attr,return count; } +static DEVICE_ATTR_RW (allow_restart);static ssize_t -sd_show_cache_type (struct device *dev,struct device_attribute *attr, -char *buf) +cache_type_show (struct device *dev,struct device_attribute *attr,char *buf) {struct scsi_disk *sdkp =to_scsi_disk (dev);int ct = sdkp->RCD +2 *sdkp->WCE;return snprintf (buf,40 ,"%s\n" , sd_cache_types[ct]); } +static DEVICE_ATTR_RW (cache_type);static ssize_t -sd_show_fua (struct device *dev,struct device_attribute *attr,char *buf) +FUA_show (struct device *dev,struct device_attribute *attr,char *buf) {struct scsi_disk *sdkp =to_scsi_disk (dev);return snprintf (buf,20 ,"%u\n" , sdkp->DPOFUA); } +static DEVICE_ATTR_RO (FUA );static ssize_t -sd_show_manage_start_stop (struct device *dev,struct device_attribute *attr, -char *buf) -{ -struct scsi_disk *sdkp =to_scsi_disk (dev); -struct scsi_device *sdp = sdkp->device; - -return snprintf (buf,20 ,"%u\n" , sdp->manage_start_stop); -} - -static ssize_t -sd_show_allow_restart (struct device *dev,struct device_attribute *attr, -char *buf) -{ -struct scsi_disk *sdkp =to_scsi_disk (dev); - -return snprintf (buf,40 ,"%d\n" , sdkp->device->allow_restart); -} - -static ssize_t -sd_show_protection_type (struct device *dev,struct device_attribute *attr, -char *buf) +protection_type_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct scsi_disk *sdkp =to_scsi_disk (dev);@@ -278,8 +280,8 @@ sd_show_protection_type(struct device *dev, struct device_attribute *attr, }static ssize_t -sd_store_protection_type (struct device *dev,struct device_attribute *attr, -const char *buf,size_t count) +protection_type_store (struct device *dev,struct device_attribute *attr, +const char *buf,size_t count) {struct scsi_disk *sdkp =to_scsi_disk (dev);unsigned int val;@@ -298,10 +300,11 @@ sd_store_protection_type(struct device *dev, struct device_attribute *attr,return count; } +static DEVICE_ATTR_RW (protection_type);static ssize_t -sd_show_protection_mode (struct device *dev,struct device_attribute *attr, -char *buf) +protection_mode_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct scsi_disk *sdkp =to_scsi_disk (dev);struct scsi_device *sdp = sdkp->device;@@ -320,24 +323,26 @@ sd_show_protection_mode(struct device *dev, struct device_attribute *attr,return snprintf (buf,20 ,"%s%u\n" , dix ?"dix" :"dif" , dif); } +static DEVICE_ATTR_RO (protection_mode);static ssize_t -sd_show_app_tag_own (struct device *dev,struct device_attribute *attr, -char *buf) +app_tag_own_show (struct device *dev,struct device_attribute *attr,char *buf) {struct scsi_disk *sdkp =to_scsi_disk (dev);return snprintf (buf,20 ,"%u\n" , sdkp->ATO); } +static DEVICE_ATTR_RO (app_tag_own);static ssize_t -sd_show_thin_provisioning (struct device *dev,struct device_attribute *attr, -char *buf) +thin_provisioning_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct scsi_disk *sdkp =to_scsi_disk (dev);return snprintf (buf,20 ,"%u\n" , sdkp->lbpme); } +static DEVICE_ATTR_RO (thin_provisioning);static const char *lbp_mode[] = { [SD_LBP_FULL ] ="full" ,@@ -349,8 +354,8 @@ static const char *lbp_mode[] = { };static ssize_t -sd_show_provisioning_mode (struct device *dev,struct device_attribute *attr, -char *buf) +provisioning_mode_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct scsi_disk *sdkp =to_scsi_disk (dev);@@ -358,8 +363,8 @@ sd_show_provisioning_mode(struct device *dev, struct device_attribute *attr, }static ssize_t -sd_store_provisioning_mode (struct device *dev,struct device_attribute *attr, -const char *buf,size_t count) +provisioning_mode_store (struct device *dev,struct device_attribute *attr, +const char *buf,size_t count) {struct scsi_disk *sdkp =to_scsi_disk (dev);struct scsi_device *sdp = sdkp->device;@@ -385,10 +390,11 @@ sd_store_provisioning_mode(struct device *dev, struct device_attribute *attr,return count; } +static DEVICE_ATTR_RW (provisioning_mode);static ssize_t -sd_show_max_medium_access_timeouts (struct device *dev, -struct device_attribute *attr,char *buf) +max_medium_access_timeouts_show (struct device *dev, +struct device_attribute *attr,char *buf) {struct scsi_disk *sdkp =to_scsi_disk (dev);@@ -396,9 +402,9 @@ sd_show_max_medium_access_timeouts(struct device *dev, }static ssize_t -sd_store_max_medium_access_timeouts (struct device *dev, -struct device_attribute *attr, -const char *buf,size_t count) +max_medium_access_timeouts_store (struct device *dev, +struct device_attribute *attr,const char *buf, +size_t count) {struct scsi_disk *sdkp =to_scsi_disk (dev);int err;@@ -410,10 +416,11 @@ sd_store_max_medium_access_timeouts(struct device *dev,return err ? err : count; } +static DEVICE_ATTR_RW (max_medium_access_timeouts);static ssize_t -sd_show_write_same_blocks (struct device *dev,struct device_attribute *attr, -char *buf) +max_write_same_blocks_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct scsi_disk *sdkp =to_scsi_disk (dev);@@ -421,8 +428,8 @@ sd_show_write_same_blocks(struct device *dev, struct device_attribute *attr, }static ssize_t -sd_store_write_same_blocks (struct device *dev,struct device_attribute *attr, -const char *buf,size_t count) +max_write_same_blocks_store (struct device *dev,struct device_attribute *attr, +const char *buf,size_t count) {struct scsi_disk *sdkp =to_scsi_disk (dev);struct scsi_device *sdp = sdkp->device;@@ -451,35 +458,29 @@ sd_store_write_same_blocks(struct device *dev, struct device_attribute *attr,return count; } - -static struct device_attribute sd_disk_attrs[] = { -__ATTR (cache_type,S_IRUGO |S_IWUSR , sd_show_cache_type, - sd_store_cache_type), -__ATTR (FUA ,S_IRUGO , sd_show_fua,NULL ), -__ATTR (allow_restart,S_IRUGO |S_IWUSR , sd_show_allow_restart, - sd_store_allow_restart), -__ATTR (manage_start_stop,S_IRUGO |S_IWUSR , sd_show_manage_start_stop, - sd_store_manage_start_stop), -__ATTR (protection_type,S_IRUGO |S_IWUSR , sd_show_protection_type, - sd_store_protection_type), -__ATTR (protection_mode,S_IRUGO , sd_show_protection_mode,NULL ), -__ATTR (app_tag_own,S_IRUGO , sd_show_app_tag_own,NULL ), -__ATTR (thin_provisioning,S_IRUGO , sd_show_thin_provisioning,NULL ), -__ATTR (provisioning_mode,S_IRUGO |S_IWUSR , sd_show_provisioning_mode, - sd_store_provisioning_mode), -__ATTR (max_write_same_blocks,S_IRUGO |S_IWUSR , - sd_show_write_same_blocks, sd_store_write_same_blocks), -__ATTR (max_medium_access_timeouts,S_IRUGO |S_IWUSR , - sd_show_max_medium_access_timeouts, - sd_store_max_medium_access_timeouts), - __ATTR_NULL, +static DEVICE_ATTR_RW (max_write_same_blocks); + +static struct attribute *sd_disk_attrs[] = { + &dev_attr_cache_type.attr, + &dev_attr_FUA.attr, + &dev_attr_allow_restart.attr, + &dev_attr_manage_start_stop.attr, + &dev_attr_protection_type.attr, + &dev_attr_protection_mode.attr, + &dev_attr_app_tag_own.attr, + &dev_attr_thin_provisioning.attr, + &dev_attr_provisioning_mode.attr, + &dev_attr_max_write_same_blocks.attr, + &dev_attr_max_medium_access_timeouts.attr, +NULL , }; +ATTRIBUTE_GROUPS (sd_disk);static struct class sd_disk_class = { .name ="scsi_disk" , .owner =THIS_MODULE , .dev_release = scsi_disk_release, - .dev_attrs = sd_disk_attrs, + .dev_groups = sd_disk_groups, };static const struct dev_pm_ops sd_pm_ops = {
Greg Kroah-Hartman
maintainerRe: [PATCH 25/36] SCSI: sd: convert class code to use dev_groups
Quoted 13 lines · James Bottomley
Quoted 12 lines · Greg Kroah-Hartman
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the scsi disk class code to use the correct field.It required some functions to be moved around to place the show and store functions next to each other, the old order seemed to make no sense at all.
Cc James E.J. Bottomley <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>---
Quoted 5 lines
Quoted 2 lines
James, feel free to take this through your tree, or ACK it and I can take it through mine.
Just found this ... I have the stable folder rule be git-send-email and from you, so it picks up your patches as well.
It seems you aren't the only one who has procmail rules for my emails :)
I wonder if I need to start sending my stable stuff out from a different email address...
Quoted 2 lines
I'll take it through my tree, just in case we're mucking about with attributes this cycle around.
That's fine with me, thanks.
greg k-h
Re: [PATCH 25/36] SCSI: sd: convert class code to use dev_groups
Quoted 14 lines · Greg Kroah-Hartman
Quoted 13 lines · James Bottomley
Quoted 12 lines · Greg Kroah-Hartman
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the scsi disk class code to use the correct field.It required some functions to be moved around to place the show and store functions next to each other, the old order seemed to make no sense at all.
Cc James E.J. Bottomley <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>---
Quoted 7 lines
Quoted 5 lines
Quoted 2 lines
James, feel free to take this through your tree, or ACK it and I can take it through mine.
Just found this ... I have the stable folder rule be git-send-email and from you, so it picks up your patches as well.
It seems you aren't the only one who has procmail rules for my emails :)
It's not that I don't like you, I procmail it to a different folder because of mobile phones: my inbox is about 50 deep and a stable patch run can basically empty the cache ... this can be damn annoying if your hotel reservation is number 51.
Quoted 2 lines
I wonder if I need to start sending my stable stuff out from a different email address...
You don't need a different address, just use a different tag. I tag all SCSI git email with
X-Git-Tree: SCSI
Ben Hutchings tags all his stable email with:
X-mailer: LinuxStableQueue (scripts by bwh)
and so on ... any header tag does ... I'm sure git-send-email can be persuaded to add a more meaningful one.
Quoted 4 lines
Quoted 2 lines
I'll take it through my tree, just in case we're mucking about with attributes this cycle around.
That's fine with me, thanks.
OK, adding it to the testing queue now.
James
Greg Kroah-Hartman
maintainerPATCH 26/36 SCSI: st: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the scsi tape class code to use the correct field.
---
James, feel free to take this through your tree, or ACK it and I can take it through mine.
drivers/scsi/st.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-)
drivers/scsi/st.c +16 -11
@@ -82,7 +82,7 @@ static int try_rdio = 1;static int try_wdio =1 ;static struct class st_sysfs_class; -static struct device_attribute st_dev_attrs[]; +static const struct attribute_group *st_dev_groups[];MODULE_AUTHOR ("Kai Makisara" );MODULE_DESCRIPTION ("SCSI tape (st) driver" );
@@ -4274,7 +4274,7 @@ static void scsi_tape_release(struct kref *kref)static struct class st_sysfs_class = { .name ="scsi_tape" , - .dev_attrs = st_dev_attrs, + .dev_groups = st_dev_groups, };static int __init init_st (void )
@@ -4408,6 +4408,7 @@ defined_show(struct device *dev, struct device_attribute *attr, char *buf) l =snprintf (buf,PAGE_SIZE ,"%d\n" , STm->defined);return l; } +static DEVICE_ATTR_RO (defined); static ssize_t default_blksize_show(struct device *dev, struct device_attribute *attr,
@@ -4419,7 +4420,7 @@ default_blksize_show(struct device *dev, struct device_attribute *attr, l =snprintf (buf,PAGE_SIZE ,"%d\n" , STm->default_blksize);return l; } - +static DEVICE_ATTR_RO (default_blksize); static ssize_t default_density_show(struct device *dev, struct device_attribute *attr,
@@ -4433,6 +4434,7 @@ default_density_show(struct device *dev, struct device_attribute *attr, l =snprintf (buf,PAGE_SIZE , fmt, STm->default_density);return l; } +static DEVICE_ATTR_RO (default_density); static ssize_t default_compression_show(struct device *dev, struct device_attribute *attr,
@@ -4444,6 +4446,7 @@ default_compression_show(struct device *dev, struct device_attribute *attr, l =snprintf (buf,PAGE_SIZE ,"%d\n" , STm->default_compression -1 );return l; } +static DEVICE_ATTR_RO (default_compression);static ssize_t options_show (struct device *dev,struct device_attribute *attr,char *buf)
@@ -4472,15 +4475,17 @@ options_show(struct device *dev, struct device_attribute *attr, char *buf) l =snprintf (buf,PAGE_SIZE ,"0x%08x\n" , options);return l; } - -static struct device_attribute st_dev_attrs[] = { -__ATTR_RO (defined), -__ATTR_RO (default_blksize), -__ATTR_RO (default_density), -__ATTR_RO (default_compression), -__ATTR_RO (options), - __ATTR_NULL, +static DEVICE_ATTR_RO (options); + +static struct attribute *st_dev_attrs[] = { + &dev_attr_defined.attr, + &dev_attr_default_blksize.attr, + &dev_attr_default_density.attr, + &dev_attr_default_compression.attr, + &dev_attr_options.attr, +NULL , }; +ATTRIBUTE_GROUPS (st_dev);/* The following functions may be useful for a larger audience. */ static int sgl_map_user_pages(struct st_buffer *STbp,
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Re: [PATCH 26/36] SCSI: st: convert class code to use dev_groups
Adding linux-scsi to cc.
James
Quoted 86 lines · Greg Kroah-Hartman
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the scsi tape class code to use the correct field.Cc Kai Mäkisara <[email protected]>Cc James E.J. Bottomley <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>---
James, feel free to take this through your tree, or ACK it and I can take it through mine.
drivers/scsi/st.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-)drivers/scsi/st.c +10
-11@@ -82,7 +82,7 @@ static int try_rdio = 1;static int try_wdio =1 ;static struct class st_sysfs_class; -static struct device_attribute st_dev_attrs[]; +static const struct attribute_group *st_dev_groups[];MODULE_AUTHOR ("Kai Makisara" );MODULE_DESCRIPTION ("SCSI tape (st) driver" );@@ -4274,7 +4274,7 @@ static void scsi_tape_release(struct kref *kref)static struct class st_sysfs_class = { .name ="scsi_tape" , - .dev_attrs = st_dev_attrs, + .dev_groups = st_dev_groups, };static int __init init_st (void )@@ -4408,6 +4408,7 @@ defined_show(struct device *dev, struct device_attribute *attr, char *buf) l =snprintf (buf,PAGE_SIZE ,"%d\n" , STm->defined);return l; } +static DEVICE_ATTR_RO (defined); static ssize_t default_blksize_show(struct device *dev, struct device_attribute *attr,@@ -4419,7 +4420,7 @@ default_blksize_show(struct device *dev, struct device_attribute *attr, l =snprintf (buf,PAGE_SIZE ,"%d\n" , STm->default_blksize);return l; } - +static DEVICE_ATTR_RO (default_blksize); static ssize_t default_density_show(struct device *dev, struct device_attribute *attr,@@ -4433,6 +4434,7 @@ default_density_show(struct device *dev, struct device_attribute *attr, l =snprintf (buf,PAGE_SIZE , fmt, STm->default_density);return l; } +static DEVICE_ATTR_RO (default_density); static ssize_t default_compression_show(struct device *dev, struct device_attribute *attr,@@ -4444,6 +4446,7 @@ default_compression_show(struct device *dev, struct device_attribute *attr, l =snprintf (buf,PAGE_SIZE ,"%d\n" , STm->default_compression -1 );return l; } +static DEVICE_ATTR_RO (default_compression);static ssize_t options_show (struct device *dev,struct device_attribute *attr,char *buf)@@ -4472,15 +4475,17 @@ options_show(struct device *dev, struct device_attribute *attr, char *buf) l =snprintf (buf,PAGE_SIZE ,"0x%08x\n" , options);return l; } - -static struct device_attribute st_dev_attrs[] = { -__ATTR_RO (defined), -__ATTR_RO (default_blksize), -__ATTR_RO (default_density), -__ATTR_RO (default_compression), -__ATTR_RO (options), - __ATTR_NULL, +static DEVICE_ATTR_RO (options); + +static struct attribute *st_dev_attrs[] = { + &dev_attr_defined.attr,
drivers/scsi/st.c options_show(struct device *dev, struct device_attribute *attr, char *buf) · line 4491
Quoted 10 lines
drivers/scsi/st.c +6
-0+ &dev_attr_default_blksize.attr, + &dev_attr_default_density.attr, + &dev_attr_default_compression.attr, + &dev_attr_options.attr, +NULL , }; +ATTRIBUTE_GROUPS (st_dev);/* The following functions may be useful for a larger audience. */ static int sgl_map_user_pages(struct st_buffer *STbp,
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 26/36] SCSI: st: convert class code to use dev_groups
In reply to Greg Kroah-HartmanQuoted 7 lines · Greg Kroah-Hartman
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the scsi tape class code to use the correct field.Cc Kai Mäkisara <[email protected]>Cc James E.J. Bottomley <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>
Quoted 12 lines
James, feel free to take this through your tree, or ACK it and I can take it through mine.
drivers/scsi/st.c| 27 ++++++++++++++++-----------1 file changed, 16 insertions(+), 11 deletions(-)drivers/scsi/st.c +0
-0
drivers/scsi/st.c static int try_rdio = 1; · line 83
Quoted 2 lines
drivers/scsi/st.c +0
-0@@ -82,7 +82,7 @@ static int try_rdio = 1;static int try_wdio =1 ;
…
Thanks,
Kai
Greg Kroah-Hartman
maintainerPATCH 27/36 video: backlight: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the video backlight class code to use the correct field.
---
Richard, feel free to take this through your tree, or ACK it and I can take it through mine.
drivers/video/backlight/backlight.c | 44 ++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 20 deletions(-)
drivers/video/backlight/backlight.c +24 -20
@@ -103,16 +103,16 @@ static void backlight_generate_event(struct backlight_device *bd,sysfs_notify (&bd->dev.kobj,NULL ,"actual_brightness" ); } -static ssize_t backlight_show_power (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t bl_power_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct backlight_device *bd =to_backlight_device (dev);return sprintf (buf,"%d\n" , bd->props.power); } -static ssize_t backlight_store_power (struct device *dev, -struct device_attribute *attr,const char *buf,size_t count) +static ssize_t bl_power_store (struct device *dev,struct device_attribute *attr, +const char *buf,size_t count) {int rc;struct backlight_device *bd =to_backlight_device (dev);
@@ -136,8 +136,9 @@ static ssize_t backlight_store_power(struct device *dev,return rc; } +static DEVICE_ATTR_RW (bl_power); -static ssize_t backlight_show_brightness (struct device *dev, +static ssize_t brightness_show (struct device *dev,struct device_attribute *attr,char *buf) {struct backlight_device *bd =to_backlight_device (dev);
@@ -145,7 +146,7 @@ static ssize_t backlight_show_brightness(struct device *dev,return sprintf (buf,"%d\n" , bd->props.brightness); } -static ssize_t backlight_store_brightness (struct device *dev, +static ssize_t brightness_store (struct device *dev,struct device_attribute *attr,const char *buf,size_t count) {int rc;
@@ -175,24 +176,27 @@ static ssize_t backlight_store_brightness(struct device *dev,return rc; } +static DEVICE_ATTR_RW (brightness); -static ssize_t backlight_show_type (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t type_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct backlight_device *bd =to_backlight_device (dev);return sprintf (buf,"%s\n" , backlight_types[bd->props.type]); } +static DEVICE_ATTR_RO (type); -static ssize_t backlight_show_max_brightness (struct device *dev, +static ssize_t max_brightness_show (struct device *dev,struct device_attribute *attr,char *buf) {struct backlight_device *bd =to_backlight_device (dev);return sprintf (buf,"%d\n" , bd->props.max_brightness); } +static DEVICE_ATTR_RO (max_brightness); -static ssize_t backlight_show_actual_brightness (struct device *dev, +static ssize_t actual_brightness_show (struct device *dev,struct device_attribute *attr,char *buf) {int rc = -ENXIO ;
@@ -205,6 +209,7 @@ static ssize_t backlight_show_actual_brightness(struct device *dev,return rc; } +static DEVICE_ATTR_RO (actual_brightness);static struct class *backlight_class;
@@ -247,16 +252,15 @@ static void bl_device_release(struct device *dev)kfree (bd); } -static struct device_attribute bl_device_attributes[] = { -__ATTR (bl_power,0644 , backlight_show_power, backlight_store_power), -__ATTR (brightness,0644 , backlight_show_brightness, - backlight_store_brightness), -__ATTR (actual_brightness,0444 , backlight_show_actual_brightness, -NULL ), -__ATTR (max_brightness,0444 , backlight_show_max_brightness,NULL ), -__ATTR (type,0444 , backlight_show_type,NULL ), - __ATTR_NULL, +static struct attribute *bl_device_attrs[] = { + &dev_attr_bl_power.attr, + &dev_attr_brightness.attr, + &dev_attr_actual_brightness.attr, + &dev_attr_max_brightness.attr, + &dev_attr_type.attr, +NULL , }; +ATTRIBUTE_GROUPS (bl_device);/** * backlight_force_update - tell the backlight subsystem that hardware state
@@ -493,7 +497,7 @@ static int __init backlight_class_init(void)return PTR_ERR (backlight_class); } - backlight_class->dev_attrs = bl_device_attributes; + backlight_class->dev_groups = bl_device_groups; backlight_class->pm = &backlight_class_dev_pm_ops;return 0 ; }
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Re: [PATCH 27/36] video: backlight: convert class code to use dev_groups
Quoted 5 lines · Greg Kroah-Hartman
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the video backlight class code to use the correct field.
Quoted 7 lines
Cc Richard Purdie <[email protected]>Cc Jingoo Han <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>---
Richard, feel free to take this through your tree, or ACK it and I can take it through mine.
Hi Greg Kroah-Hartman,
I hope that it will go through your tree with my Ack.
Best regards,
Jingoo Han
Quoted 125 lines
drivers/video/backlight/backlight.c | 44 ++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 20 deletions(-)drivers/video/backlight/backlight.c +24
-21@@ -103,16 +103,16 @@ static void backlight_generate_event(struct backlight_device *bd,sysfs_notify (&bd->dev.kobj,NULL ,"actual_brightness" ); } -static ssize_t backlight_show_power (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t bl_power_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct backlight_device *bd =to_backlight_device (dev);return sprintf (buf,"%d\n" , bd->props.power); } -static ssize_t backlight_store_power (struct device *dev, -struct device_attribute *attr,const char *buf,size_t count) +static ssize_t bl_power_store (struct device *dev,struct device_attribute *attr, +const char *buf,size_t count) {int rc;struct backlight_device *bd =to_backlight_device (dev);@@ -136,8 +136,9 @@ static ssize_t backlight_store_power(struct device *dev,return rc; } +static DEVICE_ATTR_RW (bl_power); -static ssize_t backlight_show_brightness (struct device *dev, +static ssize_t brightness_show (struct device *dev,struct device_attribute *attr,char *buf) {struct backlight_device *bd =to_backlight_device (dev);@@ -145,7 +146,7 @@ static ssize_t backlight_show_brightness(struct device *dev,return sprintf (buf,"%d\n" , bd->props.brightness); } -static ssize_t backlight_store_brightness (struct device *dev, +static ssize_t brightness_store (struct device *dev,struct device_attribute *attr,const char *buf,size_t count) {int rc;@@ -175,24 +176,27 @@ static ssize_t backlight_store_brightness(struct device *dev,return rc; } +static DEVICE_ATTR_RW (brightness); -static ssize_t backlight_show_type (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t type_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct backlight_device *bd =to_backlight_device (dev);return sprintf (buf,"%s\n" , backlight_types[bd->props.type]); } +static DEVICE_ATTR_RO (type); -static ssize_t backlight_show_max_brightness (struct device *dev, +static ssize_t max_brightness_show (struct device *dev,struct device_attribute *attr,char *buf) {struct backlight_device *bd =to_backlight_device (dev);return sprintf (buf,"%d\n" , bd->props.max_brightness); } +static DEVICE_ATTR_RO (max_brightness); -static ssize_t backlight_show_actual_brightness (struct device *dev, +static ssize_t actual_brightness_show (struct device *dev,struct device_attribute *attr,char *buf) {int rc = -ENXIO ;@@ -205,6 +209,7 @@ static ssize_t backlight_show_actual_brightness(struct device *dev,return rc; } +static DEVICE_ATTR_RO (actual_brightness);static struct class *backlight_class;@@ -247,16 +252,15 @@ static void bl_device_release(struct device *dev)kfree (bd); } -static struct device_attribute bl_device_attributes[] = { -__ATTR (bl_power,0644 , backlight_show_power, backlight_store_power), -__ATTR (brightness,0644 , backlight_show_brightness, - backlight_store_brightness), -__ATTR (actual_brightness,0444 , backlight_show_actual_brightness, -NULL ), -__ATTR (max_brightness,0444 , backlight_show_max_brightness,NULL ), -__ATTR (type,0444 , backlight_show_type,NULL ), - __ATTR_NULL, +static struct attribute *bl_device_attrs[] = { + &dev_attr_bl_power.attr, + &dev_attr_brightness.attr, + &dev_attr_actual_brightness.attr, + &dev_attr_max_brightness.attr, + &dev_attr_type.attr, +NULL , }; +ATTRIBUTE_GROUPS (bl_device);/** * backlight_force_update - tell the backlight subsystem that hardware state @@ -493,7 +497,7 @@ static int __init backlight_class_init(void)return PTR_ERR (backlight_class); } - backlight_class->dev_attrs = bl_device_attributes; + backlight_class->dev_groups = bl_device_groups; backlight_class->pm = &backlight_class_dev_pm_ops;return 0 ; } --1.8.3.rc0.20.gb99dd2e
Greg Kroah-Hartman
maintainerPATCH 28/36 video: backlight: lcd: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the video backlight lcd class code to use the correct field.
---
Richard, feel free to take this through your tree, or ACK it and I can take it through mine.
drivers/video/backlight/lcd.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-)
drivers/video/backlight/lcd.c +15 -11
@@ -89,7 +89,7 @@ static inline void lcd_unregister_fb(struct lcd_device *ld) }#endif /* CONFIG_FB */ -static ssize_t lcd_show_power (struct device *dev,struct device_attribute *attr, +static ssize_t lcd_power_show (struct device *dev,struct device_attribute *attr,char *buf) {int rc;
@@ -105,7 +105,7 @@ static ssize_t lcd_show_power(struct device *dev, struct device_attribute *attr,return rc; } -static ssize_t lcd_store_power (struct device *dev, +static ssize_t lcd_power_store (struct device *dev,struct device_attribute *attr,const char *buf,size_t count) {int rc;
@@ -128,8 +128,9 @@ static ssize_t lcd_store_power(struct device *dev,return rc; } +static DEVICE_ATTR_RW (lcd_power); -static ssize_t lcd_show_contrast (struct device *dev, +static ssize_t contrast_show (struct device *dev,struct device_attribute *attr,char *buf) {int rc = -ENXIO ;
@@ -143,7 +144,7 @@ static ssize_t lcd_show_contrast(struct device *dev,return rc; } -static ssize_t lcd_store_contrast (struct device *dev, +static ssize_t contrast_store (struct device *dev,struct device_attribute *attr,const char *buf,size_t count) {int rc;
@@ -166,14 +167,16 @@ static ssize_t lcd_store_contrast(struct device *dev,return rc; } +static DEVICE_ATTR_RW (contrast); -static ssize_t lcd_show_max_contrast (struct device *dev, +static ssize_t max_contrast_show (struct device *dev,struct device_attribute *attr,char *buf) {struct lcd_device *ld =to_lcd_device (dev);return sprintf (buf,"%d\n" , ld->props.max_contrast); } +static DEVICE_ATTR_RO (max_contrast);static struct class *lcd_class;
@@ -183,12 +186,13 @@ static void lcd_device_release(struct device *dev)kfree (ld); } -static struct device_attribute lcd_device_attributes[] = { -__ATTR (lcd_power,0644 , lcd_show_power, lcd_store_power), -__ATTR (contrast,0644 , lcd_show_contrast, lcd_store_contrast), -__ATTR (max_contrast,0444 , lcd_show_max_contrast,NULL ), - __ATTR_NULL, +static struct attribute *lcd_device_attrs[] = { + &dev_attr_lcd_power.attr, + &dev_attr_contrast.attr, + &dev_attr_max_contrast.attr, +NULL , }; +ATTRIBUTE_GROUPS (lcd_device);/** * lcd_device_register - register a new object of lcd_device class.
@@ -344,7 +348,7 @@ static int __init lcd_class_init(void)return PTR_ERR (lcd_class); } - lcd_class->dev_attrs = lcd_device_attributes; + lcd_class->dev_groups = lcd_device_groups;return 0 ; }
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Re: [PATCH 28/36] video: backlight: lcd: convert class code to use dev_groups
Quoted 5 lines · Greg Kroah-Hartman
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the video backlight lcd class code to use the correct field.
Quoted 7 lines
Cc Richard Purdie <[email protected]>Cc Jingoo Han <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>---
Richard, feel free to take this through your tree, or ACK it and I can take it through mine.
Hi Greg Kroah-Hartman,
I hope that it will go through your tree with my Ack.
Best regards,
Jingoo Han
Quoted 94 lines
drivers/video/backlight/lcd.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-)drivers/video/backlight/lcd.c +15
-12@@ -89,7 +89,7 @@ static inline void lcd_unregister_fb(struct lcd_device *ld) }#endif /* CONFIG_FB */ -static ssize_t lcd_show_power (struct device *dev,struct device_attribute *attr, +static ssize_t lcd_power_show (struct device *dev,struct device_attribute *attr,char *buf) {int rc;@@ -105,7 +105,7 @@ static ssize_t lcd_show_power(struct device *dev, struct device_attribute *attr,return rc; } -static ssize_t lcd_store_power (struct device *dev, +static ssize_t lcd_power_store (struct device *dev,struct device_attribute *attr,const char *buf,size_t count) {int rc;@@ -128,8 +128,9 @@ static ssize_t lcd_store_power(struct device *dev,return rc; } +static DEVICE_ATTR_RW (lcd_power); -static ssize_t lcd_show_contrast (struct device *dev, +static ssize_t contrast_show (struct device *dev,struct device_attribute *attr,char *buf) {int rc = -ENXIO ;@@ -143,7 +144,7 @@ static ssize_t lcd_show_contrast(struct device *dev,return rc; } -static ssize_t lcd_store_contrast (struct device *dev, +static ssize_t contrast_store (struct device *dev,struct device_attribute *attr,const char *buf,size_t count) {int rc;@@ -166,14 +167,16 @@ static ssize_t lcd_store_contrast(struct device *dev,return rc; } +static DEVICE_ATTR_RW (contrast); -static ssize_t lcd_show_max_contrast (struct device *dev, +static ssize_t max_contrast_show (struct device *dev,struct device_attribute *attr,char *buf) {struct lcd_device *ld =to_lcd_device (dev);return sprintf (buf,"%d\n" , ld->props.max_contrast); } +static DEVICE_ATTR_RO (max_contrast);static struct class *lcd_class;@@ -183,12 +186,13 @@ static void lcd_device_release(struct device *dev)kfree (ld); } -static struct device_attribute lcd_device_attributes[] = { -__ATTR (lcd_power,0644 , lcd_show_power, lcd_store_power), -__ATTR (contrast,0644 , lcd_show_contrast, lcd_store_contrast), -__ATTR (max_contrast,0444 , lcd_show_max_contrast,NULL ), - __ATTR_NULL, +static struct attribute *lcd_device_attrs[] = { + &dev_attr_lcd_power.attr, + &dev_attr_contrast.attr, + &dev_attr_max_contrast.attr, +NULL , }; +ATTRIBUTE_GROUPS (lcd_device);/** * lcd_device_register - register a new object of lcd_device class. @@ -344,7 +348,7 @@ static int __init lcd_class_init(void)return PTR_ERR (lcd_class); } - lcd_class->dev_attrs = lcd_device_attributes; + lcd_class->dev_groups = lcd_device_groups;return 0 ; } --1.8.3.rc0.20.gb99dd2e
Greg Kroah-Hartman
maintainerPATCH 29/36 video: output: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the video output class code to use the correct field.
---
Jean-Christophe and Tomi, feel free to take this through your tree, or ACK it and I can take it through mine.
drivers/video/output.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)
drivers/video/output.c +10 -10
@@ -32,8 +32,8 @@ MODULE_DESCRIPTION("Display Output Switcher Lowlevel Control Abstraction");MODULE_LICENSE ("GPL" );MODULE_AUTHOR ("Luming Yu <[email protected]>" ); -static ssize_t video_output_show_state (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t state_show (struct device *dev,struct device_attribute *attr, +char *buf) {ssize_t ret_size =0 ;struct output_device *od =to_output_device (dev);
@@ -42,9 +42,8 @@ static ssize_t video_output_show_state(struct device *dev,return ret_size; } -static ssize_t video_output_store_state (struct device *dev, -struct device_attribute *attr, -const char *buf,size_t count) +static ssize_t state_store (struct device *dev,struct device_attribute *attr, +const char *buf,size_t count) {char *endp;struct output_device *od =to_output_device (dev);
@@ -62,6 +61,7 @@ static ssize_t video_output_store_state(struct device *dev, }return count; } +static DEVICE_ATTR_RW (state);static void video_output_release (struct device *dev) {
@@ -69,16 +69,16 @@ static void video_output_release(struct device *dev)kfree (od); } -static struct device_attribute video_output_attributes[] = { -__ATTR (state,0644 , video_output_show_state, video_output_store_state), - __ATTR_NULL, +static struct attribute *video_output_attrs[] = { + &dev_attr_state.attr, +NULL , }; - +ATTRIBUTE_GROUPS (video_output);static struct class video_output_class = { .name ="video_output" , .dev_release = video_output_release, - .dev_attrs = video_output_attributes, + .dev_groups = video_output_groups, }; struct output_device *video_output_register(const char *name,
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Re: [PATCH 29/36] video: output: convert class code to use dev_groups
Hi,
Quoted 7 lines · Greg Kroah-Hartman
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the video output class code to use the correct field.Cc Jean-Christophe Plagniol-Villard <[email protected]>Cc Tomi Valkeinen <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>
Quoted 7 lines
---
Jean-Christophe and Tomi, feel free to take this through your tree, or ACK it and I can take it through mine.
drivers/video/output.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)
I can take this.
Tomi
Greg Kroah-Hartman
maintainerPATCH 30/36 net: core: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the networking core class code to use the correct field.
In order to do this in the "cleanest" way, some of the macros had to be changed to reflect the driver core format of naming show/store functions, which accounts for the majority of the churn in this file.
---
netdev@ maintainers, feel free to take this through your tree, or ACK it and I can take it through mine.
net/core/net-sysfs.c | 136 ++++++++++++++++++++++++++++----------------------- 1 file changed, 75 insertions(+), 61 deletions(-)
net/core/net-sysfs.c +75 -61
@@ -60,12 +60,19 @@ static ssize_t format_##field(const struct net_device *net, char *buf) \ { \return sprintf (buf, format_string, net->field); \ } \ -static ssize_t show_##field(struct device *dev, \ +static ssize_t field##_show(struct device *dev, \struct device_attribute *attr,char *buf) \ { \ return netdev_show(dev, attr, buf, format_##field); \ -} +} \ + +#define NETDEVICE_SHOW_RO (field, format_string) \ +NETDEVICE_SHOW(field, format_string); \ +static DEVICE_ATTR_RO(field) +#define NETDEVICE_SHOW_RW (field, format_string) \ +NETDEVICE_SHOW(field, format_string); \ +static DEVICE_ATTR_RW(field)/* use same locking and permission rules as SIF* ioctl's */ static ssize_t netdev_store(struct device *dev, struct device_attribute *attr,
@@ -96,16 +103,16 @@ static ssize_t netdev_store(struct device *dev, struct device_attribute *attr,return ret; } -NETDEVICE_SHOW (dev_id, fmt_hex); -NETDEVICE_SHOW (addr_assign_type, fmt_dec); -NETDEVICE_SHOW (addr_len, fmt_dec); -NETDEVICE_SHOW (iflink, fmt_dec); -NETDEVICE_SHOW (ifindex, fmt_dec); -NETDEVICE_SHOW (type, fmt_dec); -NETDEVICE_SHOW (link_mode, fmt_dec); +NETDEVICE_SHOW_RO (dev_id, fmt_hex); +NETDEVICE_SHOW_RO (addr_assign_type, fmt_dec); +NETDEVICE_SHOW_RO (addr_len, fmt_dec); +NETDEVICE_SHOW_RO (iflink, fmt_dec); +NETDEVICE_SHOW_RO (ifindex, fmt_dec); +NETDEVICE_SHOW_RO (type, fmt_dec); +NETDEVICE_SHOW_RO (link_mode, fmt_dec);/* use same locking rules as GIFHWADDR ioctl's */ -static ssize_t show_address (struct device *dev,struct device_attribute *attr, +static ssize_t address_show (struct device *dev,struct device_attribute *attr,char *buf) {struct net_device *net =to_net_dev (dev);
@@ -117,15 +124,17 @@ static ssize_t show_address(struct device *dev, struct device_attribute *attr,read_unlock (&dev_base_lock);return ret; } +static DEVICE_ATTR_RO (address); -static ssize_t show_broadcast (struct device *dev, -struct device_attribute *attr,char *buf) +static ssize_t broadcast_show (struct device *dev, +struct device_attribute *attr,char *buf) {struct net_device *net =to_net_dev (dev);if (dev_isalive (net))return sysfs_format_mac (buf, net->broadcast, net->addr_len);return -EINVAL ; } +static DEVICE_ATTR_RO (broadcast);static int change_carrier (struct net_device *net,unsigned long new_carrier) {
@@ -134,13 +143,13 @@ static int change_carrier(struct net_device *net, unsigned long new_carrier)return dev_change_carrier (net, (bool ) new_carrier); } -static ssize_t store_carrier (struct device *dev,struct device_attribute *attr, -const char *buf,size_t len) +static ssize_t carrier_store (struct device *dev,struct device_attribute *attr, +const char *buf,size_t len) {return netdev_store (dev, attr, buf, len, change_carrier); } -static ssize_t show_carrier (struct device *dev, +static ssize_t carrier_show (struct device *dev,struct device_attribute *attr,char *buf) {struct net_device *netdev =to_net_dev (dev);
@@ -149,8 +158,9 @@ static ssize_t show_carrier(struct device *dev, }return -EINVAL ; } +static DEVICE_ATTR_RW (carrier); -static ssize_t show_speed (struct device *dev, +static ssize_t speed_show (struct device *dev,struct device_attribute *attr,char *buf) {struct net_device *netdev =to_net_dev (dev);
@@ -167,8 +177,9 @@ static ssize_t show_speed(struct device *dev,rtnl_unlock ();return ret; } +static DEVICE_ATTR_RO (speed); -static ssize_t show_duplex (struct device *dev, +static ssize_t duplex_show (struct device *dev,struct device_attribute *attr,char *buf) {struct net_device *netdev =to_net_dev (dev);
@@ -198,8 +209,9 @@ static ssize_t show_duplex(struct device *dev,rtnl_unlock ();return ret; } +static DEVICE_ATTR_RO (duplex); -static ssize_t show_dormant (struct device *dev, +static ssize_t dormant_show (struct device *dev,struct device_attribute *attr,char *buf) {struct net_device *netdev =to_net_dev (dev);
@@ -209,6 +221,7 @@ static ssize_t show_dormant(struct device *dev,return -EINVAL ; } +static DEVICE_ATTR_RO (dormant);static const char *const operstates[] = {"unknown" ,
@@ -220,7 +233,7 @@ static const char *const operstates[] = { "up" }; -static ssize_t show_operstate (struct device *dev, +static ssize_t operstate_show (struct device *dev,struct device_attribute *attr,char *buf) {const struct net_device *netdev =to_net_dev (dev);
@@ -237,35 +250,33 @@ static ssize_t show_operstate(struct device *dev,return sprintf (buf,"%s\n" , operstates[operstate]); } +static DEVICE_ATTR_RO (operstate);/* read-write attributes */ -NETDEVICE_SHOW (mtu, fmt_dec);static int change_mtu (struct net_device *net,unsigned long new_mtu) {return dev_set_mtu (net, (int ) new_mtu); } -static ssize_t store_mtu (struct device *dev,struct device_attribute *attr, +static ssize_t mtu_store (struct device *dev,struct device_attribute *attr,const char *buf,size_t len) {return netdev_store (dev, attr, buf, len, change_mtu); } - -NETDEVICE_SHOW (flags, fmt_hex); +NETDEVICE_SHOW_RW (mtu, fmt_dec);static int change_flags (struct net_device *net,unsigned long new_flags) {return dev_change_flags (net, (unsigned int ) new_flags); } -static ssize_t store_flags (struct device *dev,struct device_attribute *attr, +static ssize_t flags_store (struct device *dev,struct device_attribute *attr,const char *buf,size_t len) {return netdev_store (dev, attr, buf, len, change_flags); } - -NETDEVICE_SHOW (tx_queue_len, fmt_ulong); +NETDEVICE_SHOW_RW (flags, fmt_hex);static int change_tx_queue_len (struct net_device *net,unsigned long new_len) {
@@ -273,7 +284,7 @@ static int change_tx_queue_len(struct net_device *net, unsigned long new_len)return 0 ; } -static ssize_t store_tx_queue_len (struct device *dev, +static ssize_t tx_queue_len_store (struct device *dev,struct device_attribute *attr,const char *buf,size_t len) {
@@ -282,8 +293,9 @@ static ssize_t store_tx_queue_len(struct device *dev,return netdev_store (dev, attr, buf, len, change_tx_queue_len); } +NETDEVICE_SHOW_RW (tx_queue_len, fmt_ulong); -static ssize_t store_ifalias (struct device *dev,struct device_attribute *attr, +static ssize_t ifalias_store (struct device *dev,struct device_attribute *attr,const char *buf,size_t len) {struct net_device *netdev =to_net_dev (dev);
@@ -306,7 +318,7 @@ static ssize_t store_ifalias(struct device *dev, struct device_attribute *attr,return ret <0 ? ret : len; } -static ssize_t show_ifalias (struct device *dev, +static ssize_t ifalias_show (struct device *dev,struct device_attribute *attr,char *buf) {const struct net_device *netdev =to_net_dev (dev);
@@ -319,8 +331,7 @@ static ssize_t show_ifalias(struct device *dev,rtnl_unlock ();return ret; } - -NETDEVICE_SHOW (group, fmt_dec); +static DEVICE_ATTR_RW (ifalias);static int change_group (struct net_device *net,unsigned long new_group) {
@@ -328,35 +339,37 @@ static int change_group(struct net_device *net, unsigned long new_group)return 0 ; } -static ssize_t store_group (struct device *dev,struct device_attribute *attr, -const char *buf,size_t len) +static ssize_t group_store (struct device *dev,struct device_attribute *attr, +const char *buf,size_t len) {return netdev_store (dev, attr, buf, len, change_group); } - -static struct device_attribute net_class_attributes[] = { -__ATTR (addr_assign_type,S_IRUGO , show_addr_assign_type,NULL ), -__ATTR (addr_len,S_IRUGO , show_addr_len,NULL ), -__ATTR (dev_id,S_IRUGO , show_dev_id,NULL ), -__ATTR (ifalias,S_IRUGO |S_IWUSR , show_ifalias, store_ifalias), -__ATTR (iflink,S_IRUGO , show_iflink,NULL ), -__ATTR (ifindex,S_IRUGO , show_ifindex,NULL ), -__ATTR (type,S_IRUGO , show_type,NULL ), -__ATTR (link_mode,S_IRUGO , show_link_mode,NULL ), -__ATTR (address,S_IRUGO , show_address,NULL ), -__ATTR (broadcast,S_IRUGO , show_broadcast,NULL ), -__ATTR (carrier,S_IRUGO |S_IWUSR , show_carrier, store_carrier), -__ATTR (speed,S_IRUGO , show_speed,NULL ), -__ATTR (duplex,S_IRUGO , show_duplex,NULL ), -__ATTR (dormant,S_IRUGO , show_dormant,NULL ), -__ATTR (operstate,S_IRUGO , show_operstate,NULL ), -__ATTR (mtu,S_IRUGO |S_IWUSR , show_mtu, store_mtu), -__ATTR (flags,S_IRUGO |S_IWUSR , show_flags, store_flags), -__ATTR (tx_queue_len,S_IRUGO |S_IWUSR , show_tx_queue_len, - store_tx_queue_len), -__ATTR (netdev_group,S_IRUGO |S_IWUSR , show_group, store_group), - {} +NETDEVICE_SHOW (group, fmt_dec); +static DEVICE_ATTR(netdev_group, S_IRUGO | S_IWUSR, group_show, group_store); + +static struct attribute *net_class_attrs[] = { + &dev_attr_netdev_group.attr, + &dev_attr_type.attr, + &dev_attr_dev_id.attr, + &dev_attr_iflink.attr, + &dev_attr_ifindex.attr, + &dev_attr_addr_assign_type.attr, + &dev_attr_addr_len.attr, + &dev_attr_link_mode.attr, + &dev_attr_address.attr, + &dev_attr_broadcast.attr, + &dev_attr_speed.attr, + &dev_attr_duplex.attr, + &dev_attr_dormant.attr, + &dev_attr_operstate.attr, + &dev_attr_ifalias.attr, + &dev_attr_carrier.attr, + &dev_attr_mtu.attr, + &dev_attr_flags.attr, + &dev_attr_tx_queue_len.attr, +NULL , }; +ATTRIBUTE_GROUPS (net_class);/* Show a given an attribute in the statistics group */ static ssize_t netstat_show(const struct device *d,
@@ -382,13 +395,13 @@ static ssize_t netstat_show(const struct device *d,/* generate a read-only statistics attribute */ #define NETSTAT_ENTRY (name) \ -static ssize_t show_##name(struct device *d, \ +static ssize_t name##_show(struct device *d, \ struct device_attribute *attr, char *buf) \ { \ return netstat_show(d, attr, buf, \ offsetof(struct rtnl_link_stats64, name)); \ } \ -static DEVICE_ATTR(name, S_IRUGO, show_##name, NULL) +static DEVICE_ATTR_RO(name)NETSTAT_ENTRY (rx_packets);NETSTAT_ENTRY (tx_packets);
@@ -457,6 +470,9 @@ static struct attribute_group wireless_group = { .attrs = wireless_attrs, };#endif + +#else /* CONFIG_SYSFS */ +#define net_class_groups NULL#endif /* CONFIG_SYSFS */ #ifdef CONFIG_RPS
@@ -1229,9 +1245,7 @@ static const void *net_namespace(struct device *d)static struct class net_class = { .name ="net" , .dev_release = netdev_release, -#ifdef CONFIG_SYSFS - .dev_attrs = net_class_attributes, -#endif /* CONFIG_SYSFS */ + .dev_groups = net_class_groups, .dev_uevent = netdev_uevent, .ns_type = &net_ns_type_operations, .namespace = net_namespace,
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Re: [PATCH 30/36] net: core: convert class code to use dev_groups
From: Greg Kroah-Hartman <[email protected]>
Date: Wed, 24 Jul 2013 15:05:33 -0700
Quoted 8 lines
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the networking core class code to use the correct field.In order to do this in the "cleanest" way, some of the macros had to be changed to reflect the driver core format of naming show/store functions, which accounts for the majority of the churn in this file.
Quoted 6 lines
Signed-off-by Greg Kroah-Hartman <[email protected]>---
netdev@ maintainers, feel free to take this through your tree, or ACK it and I can take it through mine.
Likewise please take this through your tree Greg, thanks!
Greg Kroah-Hartman
maintainerPATCH 31/36 net: ieee802154: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the ieee802154 class code to use the correct field.
---
netdev@ maintainers, feel free to take this through your tree, or ACK it and I can take it through mine.
net/ieee802154/wpan-class.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-)
net/ieee802154/wpan-class.c +13 -10
@@ -36,7 +36,8 @@ static ssize_t name ## _show(struct device *dev, \ ret =snprintf (buf,PAGE_SIZE , format_string"\n" , args); \mutex_unlock (&phy->pib_lock); \return ret; \ -} +} \ +static DEVICE_ATTR_RO (name);#define MASTER_SHOW (field, format_string) \ MASTER_SHOW_COMPLEX(field, format_string, phy->field)
@@ -66,15 +67,17 @@ static ssize_t channels_supported_show(struct device *dev,mutex_unlock (&phy->pib_lock);return len; } - -static struct device_attribute pmib_attrs[] = { -__ATTR_RO (current_channel), -__ATTR_RO (current_page), -__ATTR_RO (channels_supported), -__ATTR_RO (transmit_power), -__ATTR_RO (cca_mode), - {}, +static DEVICE_ATTR_RO (channels_supported); + +static struct attribute *pmib_attrs[] = { + &dev_attr_current_channel.attr, + &dev_attr_current_page.attr, + &dev_attr_channels_supported.attr, + &dev_attr_transmit_power.attr, + &dev_attr_cca_mode.attr, +NULL , }; +ATTRIBUTE_GROUPS (pmib);static void wpan_phy_release (struct device *d) {
@@ -85,7 +88,7 @@ static void wpan_phy_release(struct device *d)static struct class wpan_phy_class = { .name ="ieee802154" , .dev_release = wpan_phy_release, - .dev_attrs = pmib_attrs, + .dev_groups = pmib_groups, };static DEFINE_MUTEX (wpan_phy_mutex);
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Re: [PATCH 31/36] net: ieee802154: convert class code to use dev_groups
From: Greg Kroah-Hartman <[email protected]>
Date: Wed, 24 Jul 2013 15:05:34 -0700
Quoted 4 lines
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the ieee802154 class code to use the correct field.
Quoted 8 lines
Cc Alexander Smirnov <[email protected]>Cc Dmitry Eremin-Solenikov <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>---
netdev@ maintainers, feel free to take this through your tree, or ACK it and I can take it through mine.
You can take it directly I don't anticipate any conflicts:
Greg Kroah-Hartman
maintainerPATCH 32/36 net: wireless: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the networking wireless class code to use the correct field.
---
John, feel free to take this through your tree, or ACK it and I can take it through mine.
net/wireless/sysfs.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-)
net/wireless/sysfs.c +14 -11
@@ -30,7 +30,8 @@ static ssize_t name ## _show(struct device *dev, \ char *buf) \ { \return sprintf (buf, fmt"\n" ,dev_to_rdev (dev)->member); \ -} +} \ +static DEVICE_ATTR_RO (name) SHOW_FMT(index, "%d", wiphy_idx);SHOW_FMT (macaddress,"%pM" , wiphy.perm_addr);
@@ -42,7 +43,7 @@ static ssize_t name_show(struct device *dev,struct wiphy *wiphy = &dev_to_rdev (dev)->wiphy;return sprintf (buf,"%s\n" ,dev_name (&wiphy->dev)); } - +static DEVICE_ATTR_RO (name); static ssize_t addresses_show(struct device *dev, struct device_attribute *attr,
@@ -60,15 +61,17 @@ static ssize_t addresses_show(struct device *dev,return buf - start; } - -static struct device_attribute ieee80211_dev_attrs[] = { -__ATTR_RO (index), -__ATTR_RO (macaddress), -__ATTR_RO (address_mask), -__ATTR_RO (addresses), -__ATTR_RO (name), - {} +static DEVICE_ATTR_RO (addresses); + +static struct attribute *ieee80211_attrs[] = { + &dev_attr_index.attr, + &dev_attr_macaddress.attr, + &dev_attr_address_mask.attr, + &dev_attr_addresses.attr, + &dev_attr_name.attr, +NULL , }; +ATTRIBUTE_GROUPS (ieee80211);static void wiphy_dev_release (struct device *dev) {
@@ -146,7 +149,7 @@ struct class ieee80211_class = { .name = "ieee80211", .owner = THIS_MODULE, .dev_release = wiphy_dev_release, - .dev_attrs = ieee80211_dev_attrs, + .dev_groups = ieee80211_groups, .dev_uevent = wiphy_uevent, #ifdef CONFIG_PM .suspend = wiphy_suspend,
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Re: [PATCH 32/36] net: wireless: convert class code to use dev_groups
Quoted 9 lines · Greg Kroah-Hartman
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the networking wireless class code to use the correct field.Cc Johannes Berg <[email protected]>Cc John W. Linville <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>
Quoted 4 lines
---
John, feel free to take this through your tree, or ACK it and I can take it through mine.
It's cfg80211 so it should be me, but I don't expect any conflicts so please take it.
johannes
Greg Kroah-Hartman
maintainerPATCH 33/36 net: rfkill: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the rfkill class code to use the correct field.
---
Johnannes, feel free to take this through your tree, or ACK it and I can take it through mine.
net/rfkill/core.c | 90 +++++++++++++++++++++++++------------------------------ 1 file changed, 41 insertions(+), 49 deletions(-)
net/rfkill/core.c +41 -49
@@ -576,14 +576,14 @@ void rfkill_set_states(struct rfkill *rfkill, bool sw, bool hw) }EXPORT_SYMBOL (rfkill_set_states); -static ssize_t rfkill_name_show (struct device *dev, -struct device_attribute *attr, -char *buf) +static ssize_t name_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct rfkill *rfkill =to_rfkill (dev);return sprintf (buf,"%s\n" , rfkill->name); } +static DEVICE_ATTR_RO (name);static const char *rfkill_get_type_str (enum rfkill_type type) {
@@ -611,54 +611,52 @@ static const char *rfkill_get_type_str(enum rfkill_type type) } } -static ssize_t rfkill_type_show (struct device *dev, -struct device_attribute *attr, -char *buf) +static ssize_t type_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct rfkill *rfkill =to_rfkill (dev);return sprintf (buf,"%s\n" ,rfkill_get_type_str (rfkill->type)); } +static DEVICE_ATTR_RO (type); -static ssize_t rfkill_idx_show (struct device *dev, -struct device_attribute *attr, -char *buf) +static ssize_t index_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct rfkill *rfkill =to_rfkill (dev);return sprintf (buf,"%d\n" , rfkill->idx); } +static DEVICE_ATTR_RO (index); -static ssize_t rfkill_persistent_show (struct device *dev, -struct device_attribute *attr, -char *buf) +static ssize_t persistent_show (struct device *dev, +struct device_attribute *attr,char *buf) {struct rfkill *rfkill =to_rfkill (dev);return sprintf (buf,"%d\n" , rfkill->persistent); } +static DEVICE_ATTR_RO (persistent); -static ssize_t rfkill_hard_show (struct device *dev, -struct device_attribute *attr, -char *buf) +static ssize_t hard_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct rfkill *rfkill =to_rfkill (dev);return sprintf (buf,"%d\n" , (rfkill->state &RFKILL_BLOCK_HW ) ?1 :0 ); } +static DEVICE_ATTR_RO (hard); -static ssize_t rfkill_soft_show (struct device *dev, -struct device_attribute *attr, -char *buf) +static ssize_t soft_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct rfkill *rfkill =to_rfkill (dev);return sprintf (buf,"%d\n" , (rfkill->state &RFKILL_BLOCK_SW ) ?1 :0 ); } -static ssize_t rfkill_soft_store (struct device *dev, -struct device_attribute *attr, -const char *buf,size_t count) +static ssize_t soft_store (struct device *dev,struct device_attribute *attr, +const char *buf,size_t count) {struct rfkill *rfkill =to_rfkill (dev);unsigned long state;
@@ -680,6 +678,7 @@ static ssize_t rfkill_soft_store(struct device *dev,return count; } +static DEVICE_ATTR_RW (soft);static u8 user_state_from_blocked (unsigned long state) {
@@ -691,18 +690,16 @@ static u8 user_state_from_blocked(unsigned long state)return RFKILL_USER_STATE_UNBLOCKED ; } -static ssize_t rfkill_state_show (struct device *dev, -struct device_attribute *attr, -char *buf) +static ssize_t state_show (struct device *dev,struct device_attribute *attr, +char *buf) {struct rfkill *rfkill =to_rfkill (dev);return sprintf (buf,"%d\n" ,user_state_from_blocked (rfkill->state)); } -static ssize_t rfkill_state_store (struct device *dev, -struct device_attribute *attr, -const char *buf,size_t count) +static ssize_t state_store (struct device *dev,struct device_attribute *attr, +const char *buf,size_t count) {struct rfkill *rfkill =to_rfkill (dev);unsigned long state;
@@ -725,32 +722,27 @@ static ssize_t rfkill_state_store(struct device *dev,return count; } +static DEVICE_ATTR_RW (state); -static ssize_t rfkill_claim_show (struct device *dev, -struct device_attribute *attr, -char *buf) +static ssize_t claim_show (struct device *dev,struct device_attribute *attr, +char *buf) {return sprintf (buf,"%d\n" ,0 ); } - -static ssize_t rfkill_claim_store (struct device *dev, -struct device_attribute *attr, -const char *buf,size_t count) -{ -return -EOPNOTSUPP ; -} - -static struct device_attribute rfkill_dev_attrs[] = { -__ATTR (name,S_IRUGO , rfkill_name_show,NULL ), -__ATTR (type,S_IRUGO , rfkill_type_show,NULL ), -__ATTR (index,S_IRUGO , rfkill_idx_show,NULL ), -__ATTR (persistent,S_IRUGO , rfkill_persistent_show,NULL ), -__ATTR (state,S_IRUGO |S_IWUSR , rfkill_state_show, rfkill_state_store), -__ATTR (claim,S_IRUGO |S_IWUSR , rfkill_claim_show, rfkill_claim_store), -__ATTR (soft,S_IRUGO |S_IWUSR , rfkill_soft_show, rfkill_soft_store), -__ATTR (hard,S_IRUGO , rfkill_hard_show,NULL ), - __ATTR_NULL +static DEVICE_ATTR_RO (claim); + +static struct attribute *rfkill_dev_attrs[] = { + &dev_attr_name.attr, + &dev_attr_type.attr, + &dev_attr_index.attr, + &dev_attr_persistent.attr, + &dev_attr_state.attr, + &dev_attr_claim.attr, + &dev_attr_soft.attr, + &dev_attr_hard.attr, +NULL , }; +ATTRIBUTE_GROUPS (rfkill_dev);static void rfkill_release (struct device *dev) {
@@ -830,7 +822,7 @@ static int rfkill_resume(struct device *dev)static struct class rfkill_class = { .name ="rfkill" , .dev_release = rfkill_release, - .dev_attrs = rfkill_dev_attrs, + .dev_groups = rfkill_dev_groups, .dev_uevent = rfkill_dev_uevent, .suspend = rfkill_suspend, .resume = rfkill_resume,
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Re: [PATCH 33/36] net: rfkill: convert class code to use dev_groups
Quoted 9 lines · Greg Kroah-Hartman
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the rfkill class code to use the correct field.Cc Johannes Berg <[email protected]>Cc John W. Linville <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>
Quoted 4 lines
---
Johnannes, feel free to take this through your tree, or ACK it and I can take it through mine.
Looks good to me, go ahead and take it, we're not going to modify this code.
johannes
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Greg Kroah-Hartman
maintainerPATCH 34/36 c2port: convert class code to use bin_attrs in groups
In reply to Greg Kroah-HartmanNow that attribute groups support binary attributes, use them instead of the dev_bin_attrs field in struct class, as that is going away soon.
--- drivers/misc/c2port/core.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-)
drivers/misc/c2port/core.c +18 -15
@@ -856,6 +856,9 @@ static ssize_t c2port_write_flash_data(struct file *filp, struct kobject *kobj,return ret; } +/* size is computed at run-time */ +static BIN_ATTR(flash_data, 0644, c2port_read_flash_data, + c2port_write_flash_data, 0);/* * Class attributes
@@ -873,19 +876,20 @@ static struct attribute *c2port_attrs[] = { &dev_attr_flash_erase.attr, NULL, }; -ATTRIBUTE_GROUPS (c2port); - -static struct bin_attribute c2port_bin_attrs[] = { - { - .attr = { - .name ="flash_data" , - .mode =0644 - }, - .read = c2port_read_flash_data, - .write = c2port_write_flash_data, -/* .size is computed at run-time */ - }, - __ATTR_NULL + +static struct bin_attribute *c2port_bin_attrs[] = { + &bin_attr_flash_data, +NULL , +}; + +static const struct attribute_group c2port_group = { + .attrs = c2port_attrs, + .bin_attrs = c2port_bin_attrs, +}; + +static const struct attribute_group *c2port_groups[] = { + &c2port_group, +NULL , };/*
@@ -918,7 +922,7 @@ struct c2port_device *c2port_device_register(char *name, goto error_idr_alloc; c2dev->id = ret; - c2port_bin_attrs[0 ].size = ops->blocks_num * ops->block_size; + bin_attr_flash_data.size = ops->blocks_num * ops->block_size; c2dev->dev =device_create (c2port_class,NULL ,0 , c2dev,"c2port%d" , c2dev->id);
@@ -988,7 +992,6 @@ static int __init c2port_init(void)return PTR_ERR (c2port_class); } c2port_class->dev_groups = c2port_groups; - c2port_class->dev_bin_attrs = c2port_bin_attrs;return 0 ; }
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Greg Kroah-Hartman
maintainerPATCH 35/36 hid: roccat: convert class code to use bin_attrs in groups
In reply to Greg Kroah-HartmanNow that attribute groups support binary attributes, use them instead of the dev_bin_attrs field in struct class, as that is going away soon.
Note, there is now a compiler warning about an unused function in thehid-roccat-pyra.c file with this patch:drivers/hid/hid-roccat-pyra.c:246:16: warning: ‘pyra_sysfs_write_settings’ defined but not used [-Wunused-function]
That is because the settings binary sysfs file was previously setting the write field to be able to call this function on a write, yet the sysfs file was always marked read-only, so it was never being called. I left the sysfs file the same permissions, but didn't hook up the write function as that makes no sense. If wanted, I can just delete the function, but I'm not quite sure what is going on here with it.
---
Jiri, feel free to take this through your tree, or ACK it and I can take it through mine.
drivers/hid/hid-roccat-arvo.c | 34 +++++---- drivers/hid/hid-roccat-isku.c | 87 ++++++++++++---------- drivers/hid/hid-roccat-kone.c | 80 +++++++++----------- drivers/hid/hid-roccat-koneplus.c | 153 ++++++++++++++++---------------------- drivers/hid/hid-roccat-konepure.c | 67 ++++++++++------- drivers/hid/hid-roccat-kovaplus.c | 137 ++++++++++++++-------------------- drivers/hid/hid-roccat-pyra.c | 136 +++++++++++++++------------------ drivers/hid/hid-roccat-savu.c | 58 ++++++++------- 8 files changed, 351 insertions(+), 401 deletions(-)
drivers/hid/hid-roccat-arvo.c +19 -15
@@ -237,6 +237,8 @@ static ssize_t arvo_sysfs_write_button(struct file *fp,return arvo_sysfs_write (fp, kobj, buf, off, count,sizeof (struct arvo_button ),ARVO_COMMAND_BUTTON ); } +static BIN_ATTR(button, 0220, NULL, arvo_sysfs_write_button, + sizeof(struct arvo_button)); static ssize_t arvo_sysfs_read_info(struct file *fp, struct kobject *kobj, struct bin_attribute *attr, char *buf,
@@ -245,6 +247,8 @@ static ssize_t arvo_sysfs_read_info(struct file *fp,return arvo_sysfs_read (fp, kobj, buf, off, count,sizeof (struct arvo_info ),ARVO_COMMAND_INFO ); } +static BIN_ATTR(info, 0440, arvo_sysfs_read_info, NULL, + sizeof(struct arvo_info));static struct attribute *arvo_attrs[] = { &dev_attr_mode_key.attr,
@@ -252,20 +256,21 @@ static struct attribute *arvo_attrs[] = { &dev_attr_actual_profile.attr, NULL, }; -ATTRIBUTE_GROUPS (arvo); - -static struct bin_attribute arvo_bin_attributes[] = { - { - .attr = { .name ="button" , .mode =0220 }, - .size =sizeof (struct arvo_button ), - .write = arvo_sysfs_write_button - }, - { - .attr = { .name ="info" , .mode =0440 }, - .size =sizeof (struct arvo_info ), - .read = arvo_sysfs_read_info - }, - __ATTR_NULL + +static struct bin_attribute *arvo_bin_attributes[] = { + &bin_attr_button, + &bin_attr_info, +NULL , +}; + +static const struct attribute_group arvo_group = { + .attrs = arvo_attrs, + .bin_attrs = arvo_bin_attributes, +}; + +static const struct attribute_group *arvo_groups[] = { + &arvo_group, +NULL , }; static int arvo_init_arvo_device_struct(struct usb_device *usb_dev,
@@ -434,7 +439,6 @@ static int __init arvo_init(void)if (IS_ERR (arvo_class))return PTR_ERR (arvo_class); arvo_class->dev_groups = arvo_groups; - arvo_class->dev_bin_attrs = arvo_bin_attributes; retval =hid_register_driver (&arvo_driver);if (retval)
drivers/hid/hid-roccat-isku.c +49 -38
122 lines not on this page · raw message
drivers/hid/hid-roccat-kone.c +34 -46
104 lines not on this page · raw message
drivers/hid/hid-roccat-koneplus.c +66 -87
193 lines not on this page · raw message
drivers/hid/hid-roccat-konepure.c +40 -27
98 lines not on this page · raw message
drivers/hid/hid-roccat-kovaplus.c +54 -83
172 lines not on this page · raw message
drivers/hid/hid-roccat-pyra.c +58 -78
177 lines not on this page · raw message
drivers/hid/hid-roccat-savu.c +31 -27
82 lines not on this page · raw message
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Greg Kroah-Hartman
maintainerPATCH 36/36 pwm: convert class code to use dev_groups
In reply to Greg Kroah-HartmanThe dev_attrs field of struct class is going away soon, dev_groups should be used instead. This converts the pwm class code to use the correct field.
---
Thierry, feel free to take this through your tree, or ACK it and I can take it through mine.
drivers/pwm/sysfs.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-)
drivers/pwm/sysfs.c +12 -9
@@ -268,6 +268,7 @@ static ssize_t pwm_export_store(struct device *parent,return ret ? : len; } +static DEVICE_ATTR(export, 0200, NULL, pwm_export_store); static ssize_t pwm_unexport_store(struct device *parent, struct device_attribute *attr,
@@ -288,27 +289,29 @@ static ssize_t pwm_unexport_store(struct device *parent,return ret ? : len; } +static DEVICE_ATTR(unexport, 0200, NULL, pwm_unexport_store); -static ssize_t pwm_npwm_show (struct device *parent, -struct device_attribute *attr, -char *buf) +static ssize_t npwm_show (struct device *parent,struct device_attribute *attr, +char *buf) {const struct pwm_chip *chip =dev_get_drvdata (parent);return sprintf (buf,"%u\n" , chip->npwm); } +static DEVICE_ATTR_RO (npwm); -static struct device_attribute pwm_chip_attrs[] = { -__ATTR (export,0200 ,NULL , pwm_export_store), -__ATTR (unexport,0200 ,NULL , pwm_unexport_store), -__ATTR (npwm,0444 , pwm_npwm_show,NULL ), - __ATTR_NULL, +static struct attribute *pwm_chip_attrs[] = { + &dev_attr_export.attr, + &dev_attr_unexport.attr, + &dev_attr_npwm.attr, +NULL , }; +ATTRIBUTE_GROUPS (pwm_chip);static struct class pwm_class = { .name ="pwm" , .owner =THIS_MODULE , - .dev_attrs = pwm_chip_attrs, + .dev_groups = pwm_chip_groups, };static int pwmchip_sysfs_match (struct device *parent,const void *data)
Signature · 1 line
1.8.3.rc0.20.gb99dd2e
Thierry Reding
AppliedRe: [PATCH 36/36] pwm: convert class code to use dev_groups
Quoted 6 lines · Greg Kroah-Hartman
The
dev_attrsfield of struct class is going away soon,dev_groupsshould be used instead. This converts the pwm class code to use the correct field.Cc Thierry Reding <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>
Quoted 7 lines
---
Thierry, feel free to take this through your tree, or ACK it and I can take it through mine.
drivers/pwm/sysfs.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-)
Applied, thanks.
Thierry