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@xxxxxxxxxxxx> > --- > 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
Attachment:
signature.asc
Description: Digital signature