All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
To: Greg KH <greg-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
Cc: mamurph-ZCNwHF9ErpZ2icitjWtXSw@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-input-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	oliver-GvhC2dPhHPQdnm+yROfE0A@public.gmane.org,
	fweisbec-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
	torvalds-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org
Subject: Re: PATCH [1/3] drivers/input/xpad.c: Improve Xbox 360 wireless support  and add sysfs interface
Date: Mon, 2 Mar 2009 13:35:51 -0800	[thread overview]
Message-ID: <20090302133551.1266f725.akpm@linux-foundation.org> (raw)
In-Reply-To: <20090302211820.GA21489-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>

On Mon, 2 Mar 2009 13:18:20 -0800
Greg KH <greg-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org> wrote:

> On Mon, Mar 02, 2009 at 01:04:25PM -0800, Andrew Morton wrote:
> > On Sat, 28 Feb 2009 23:53:03 -0500
> > Mike Murphy <mamurph-ZCNwHF9ErpZ2icitjWtXSw@public.gmane.org> wrote:
> > > ...
> > >
> > > +static ssize_t xpad_show_int(struct device *dev, struct device_attribute *attr,
> > > +		char *buf)
> > > +{
> > > +	struct usb_xpad *xpad = to_xpad(dev);
> > > +	int value;
> > > +	if (attr == &dev_attr_rumble_enable)
> > > +		value = xpad->rumble_enable;
> > > +	else if (attr == &dev_attr_controller_number)
> > > +		value = xpad->controller_number;
> > > +	else if (attr == &dev_attr_controller_present)
> > > +		value = xpad->controller_present;
> > > +	else if (attr == &dev_attr_controller_type)
> > > +		value = xpad->controller_type;
> > > +	else if (attr == &dev_attr_left_trigger_full_axis)
> > > +		value = xpad->left_trigger_full_axis;
> > > +	else if (attr == &dev_attr_right_trigger_full_axis)
> > > +		value = xpad->right_trigger_full_axis;
> > > +	else
> > > +		return -EIO;
> > > +	return snprintf(buf, PAGE_SIZE, "%d\n", value);
> > > +}
> > 
> > The code's a bit unusual.  Most drivers don't have all that
> > if-then-else stuff.  They use a separate function for each sysfs file
> > and then they wrap it all up into a macro which emits all the data and
> > code for each file.
> 
> Yes, most don't, but that is because we used to not pass the attribute
> variable to the show/store functions.  It was added so that we could
> reduce the huge numbers of functions needed, to do stuff like this.  The
> hwmon drivers are examples of other drivers that do their show/store
> like this.
> 
> There's nothing wrong with it that I can see.
> 

OK.  I think.

- This approach will require a large number of edits each time an
  attribute is added/removed.

- otoh, removing nasty macros is always nice.

- This approach will generate slower code (which doesn't matter
  here).

- Was it demonstrated that this approach generates less code?


--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: Andrew Morton <akpm@linux-foundation.org>
To: Greg KH <greg@kroah.com>
Cc: mamurph@cs.clemson.edu, linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org, linux-usb@vger.kernel.org,
	oliver@neukum.org, fweisbec@gmail.com,
	torvalds@linux-foundation.org
Subject: Re: PATCH [1/3] drivers/input/xpad.c: Improve Xbox 360 wireless support  and add sysfs interface
Date: Mon, 2 Mar 2009 13:35:51 -0800	[thread overview]
Message-ID: <20090302133551.1266f725.akpm@linux-foundation.org> (raw)
In-Reply-To: <20090302211820.GA21489@kroah.com>

On Mon, 2 Mar 2009 13:18:20 -0800
Greg KH <greg@kroah.com> wrote:

> On Mon, Mar 02, 2009 at 01:04:25PM -0800, Andrew Morton wrote:
> > On Sat, 28 Feb 2009 23:53:03 -0500
> > Mike Murphy <mamurph@cs.clemson.edu> wrote:
> > > ...
> > >
> > > +static ssize_t xpad_show_int(struct device *dev, struct device_attribute *attr,
> > > +		char *buf)
> > > +{
> > > +	struct usb_xpad *xpad = to_xpad(dev);
> > > +	int value;
> > > +	if (attr == &dev_attr_rumble_enable)
> > > +		value = xpad->rumble_enable;
> > > +	else if (attr == &dev_attr_controller_number)
> > > +		value = xpad->controller_number;
> > > +	else if (attr == &dev_attr_controller_present)
> > > +		value = xpad->controller_present;
> > > +	else if (attr == &dev_attr_controller_type)
> > > +		value = xpad->controller_type;
> > > +	else if (attr == &dev_attr_left_trigger_full_axis)
> > > +		value = xpad->left_trigger_full_axis;
> > > +	else if (attr == &dev_attr_right_trigger_full_axis)
> > > +		value = xpad->right_trigger_full_axis;
> > > +	else
> > > +		return -EIO;
> > > +	return snprintf(buf, PAGE_SIZE, "%d\n", value);
> > > +}
> > 
> > The code's a bit unusual.  Most drivers don't have all that
> > if-then-else stuff.  They use a separate function for each sysfs file
> > and then they wrap it all up into a macro which emits all the data and
> > code for each file.
> 
> Yes, most don't, but that is because we used to not pass the attribute
> variable to the show/store functions.  It was added so that we could
> reduce the huge numbers of functions needed, to do stuff like this.  The
> hwmon drivers are examples of other drivers that do their show/store
> like this.
> 
> There's nothing wrong with it that I can see.
> 

OK.  I think.

- This approach will require a large number of edits each time an
  attribute is added/removed.

- otoh, removing nasty macros is always nice.

- This approach will generate slower code (which doesn't matter
  here).

- Was it demonstrated that this approach generates less code?



  parent reply	other threads:[~2009-03-02 21:35 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-01  4:53 PATCH [1/3] drivers/input/xpad.c: Improve Xbox 360 wireless support and add sysfs interface Mike Murphy
2009-03-01  4:53 ` Mike Murphy
     [not found] ` <5aa163d00902282053h38b0febbyb37fc30855fdc985-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-03-02 21:04   ` Andrew Morton
2009-03-02 21:04     ` Andrew Morton
2009-03-02 21:18     ` Greg KH
     [not found]       ` <20090302211820.GA21489-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2009-03-02 21:35         ` Andrew Morton [this message]
2009-03-02 21:35           ` Andrew Morton
     [not found]           ` <20090302133551.1266f725.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2009-03-02 21:59             ` Greg KH
2009-03-02 21:59               ` Greg KH
2009-03-02 21:59           ` Mike Murphy
2009-03-02 21:59             ` Mike Murphy
     [not found]             ` <5aa163d00903021359x3a4693f5tbb7f1e3fec4d88b8-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-03-02 22:39               ` Greg KH
2009-03-02 22:39                 ` Greg KH
2009-03-02 23:04                 ` Mike Murphy
2009-03-02 23:04                   ` Mike Murphy
     [not found]                   ` <5aa163d00903021504l1965ecdi3423a43134de10d0-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-03-02 23:13                     ` Greg KH
2009-03-02 23:13                       ` Greg KH
2009-03-02 21:46     ` Mike Murphy
2009-03-02 21:46       ` Mike Murphy
2009-03-02 22:00       ` Andrew Morton
2009-03-02 22:00         ` Andrew Morton
2009-03-02 22:27         ` Mike Murphy
2009-03-02 22:27           ` Mike Murphy
2009-03-03  2:47     ` Mike Murphy
2009-03-03  2:47       ` Mike Murphy
2009-03-03  3:09       ` Mike Murphy
2009-03-03  3:09         ` Mike Murphy
     [not found]       ` <5aa163d00903021847n525e8704jd332610c45e4675a-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-03-03  3:12         ` Linus Torvalds
2009-03-03  3:12           ` Linus Torvalds
     [not found]           ` <alpine.LFD.2.00.0903021902460.3111-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2009-03-03  4:16             ` Mike Murphy
2009-03-03  4:16               ` Mike Murphy
     [not found]               ` <5aa163d00903022016s14b7ad32qfbaf82a07b9e0921-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-03-03  4:20                 ` Mike Murphy
2009-03-03  4:20                   ` Mike Murphy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090302133551.1266f725.akpm@linux-foundation.org \
    --to=akpm-de/tnxtf+jlsfhdxvbkv3wd2fqjk+8+b@public.gmane.org \
    --cc=fweisbec-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=greg-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org \
    --cc=linux-input-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mamurph-ZCNwHF9ErpZ2icitjWtXSw@public.gmane.org \
    --cc=oliver-GvhC2dPhHPQdnm+yROfE0A@public.gmane.org \
    --cc=torvalds-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.