[PATCH 1/5] Framework for exporting System-on-Chip information via sysfs

Jamie Iles jamie at jamieiles.com
Fri Sep 2 05:56:41 EDT 2011


On Fri, Sep 02, 2011 at 10:37:47AM +0100, Lee Jones wrote:
> On 02/09/11 10:29, Jamie Iles wrote:
> > On Fri, Sep 02, 2011 at 09:44:52AM +0100, Lee Jones wrote:
> >> On 02/09/11 00:34, Greg KH wrote:
> >>> On Thu, Sep 01, 2011 at 01:27:19PM +0100, Lee Jones wrote:
> >>>> +static ssize_t soc_info_get(struct device *dev,
> >>>> +			struct device_attribute *attr,
> >>>> +			char *buf)
> >>>> +{
> >>>> +	struct soc_device *soc_dev = container_of(dev, struct soc_device, dev);
> >>>> +
> >>>> +	if (!strcmp(attr->attr.name, "machine"))
> >>>> +		return sprintf(buf, "%s\n", soc_dev->machine);
> >>>> +	if (!strcmp(attr->attr.name, "family"))
> >>>> +		return sprintf(buf, "%s\n", soc_dev->family);
> >>>> +	if (!strcmp(attr->attr.name, "revision"))
> >>>> +		return sprintf(buf, "%s\n", soc_dev->revision);
> >>>> +	if (!strcmp(attr->attr.name, "soc_id")) {
> >>>> +		if (soc_dev->pfn_soc_id)
> >>>> +			return sprintf(buf, "%s\n", soc_dev->pfn_soc_id());
> >>>> +		else return sprintf(buf, "N/A \n");
> >>>
> >>> Move this line
> >>>
> >>>> +	}
> >>>> +
> >>>> +	return -EINVAL;
> >>>
> >>> To here?
> >>>
> >>
> >> I initially had invalid requests return a useful message, but I was told
> >> to remove it and return -EINVAL instead:
> >>
> >> "Just return -EINVAL or similar here to propogate the error to the user."
> >>
> >> Jamie, what say you?
> > 
> > Well if there isn't an ID for the SoC, then I think it's better for a 
> > read() to return an error rather than have to parse for a special string 
> > like "N/A ".  So rather than returning that string, perhaps something 
> > like:
> > 
> > 	if (!strcmp(attr->attr.name, "soc_id")) {
> > 		if (!soc_dev->pfn_soc_id)
> > 			return -ENOENT;
> > 		return sprintf(buf, "%s\n", soc_dev->pfn_soc_id());
> > 	}
> > 
> > or if you don't think this is an error, default to an id of "0" so that 
> > it can be parsed by tools?
> 
> What about at the very end of the function?
> 
> What should we return if an inappropriate attr->attr.name is used?

That shouldn't happen as it is only ever registered with valid 
attributes.  That said, you do need to return something so -EINVAL seems 
like a reasonable choice.

Jamie



More information about the linux-arm-kernel mailing list