Messages in this thread | | | Date | Wed, 25 Sep 2013 22:20:35 +0200 | From | Wolfram Sang <> | Subject | Re: [PATCH] i2c: i2c-dev: Create 'name' attribute automatically |
| |
On Sat, Aug 31, 2013 at 09:30:19AM -0700, Guenter Roeck wrote: > The 'name' attribute is needed for all i2c-dev class devices, meaning > it can be created automatically by pointing to it in the class data > structure. This simplifies the code and reduces the probability for race > conditions.
What race condition?
> > Signed-off-by: Guenter Roeck <linux@roeck-us.net> > --- > drivers/i2c/i2c-dev.c | 32 ++++++++++++++++---------------- > 1 file changed, 16 insertions(+), 16 deletions(-) > > diff --git a/drivers/i2c/i2c-dev.c b/drivers/i2c/i2c-dev.c > index c3ccdea..46eea02 100644 > --- a/drivers/i2c/i2c-dev.c > +++ b/drivers/i2c/i2c-dev.c > @@ -111,7 +111,11 @@ static ssize_t show_adapter_name(struct device *dev, > return -ENODEV; > return sprintf(buf, "%s\n", i2c_dev->adap->name); > } > -static DEVICE_ATTR(name, S_IRUGO, show_adapter_name, NULL); > + > +static struct device_attribute i2c_dev_attributes[] = { > + __ATTR(name, S_IRUGO, show_adapter_name, NULL), > + { } > +}; > > /* ------------------------------------------------------------------------- */ > > @@ -538,7 +542,11 @@ static const struct file_operations i2cdev_fops = { > > /* ------------------------------------------------------------------------- */ > > -static struct class *i2c_dev_class; > +static struct class i2c_dev_class = { > + .owner = THIS_MODULE, > + .name = "i2c-dev", > + .dev_attrs = i2c_dev_attributes, > +};
Have you tried this with two instances? I don't think it will work since class_register modifies the class struct.
Regards,
Wolfram
[unhandled content-type:application/pgp-signature] | |