From: Joe Perches <joe@perches.com>
To: "Gujulan Elango, Hari Prasath (H.)" <hgujulan@visteon.com>,
"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
"christian.gromm@microchip.com" <christian.gromm@microchip.com>,
"andrey.shvetsov@k2l.de" <andrey.shvetsov@k2l.de>,
"adrianremonda@gmail.com" <adrianremonda@gmail.com>,
"sudipm.mukherjee@gmail.com" <sudipm.mukherjee@gmail.com>
Cc: "devel@driverdev.osuosl.org" <devel@driverdev.osuosl.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] staging: most: replace multiple if..else with table lookup
Date: Thu, 24 Dec 2015 08:06:26 -0800 [thread overview]
Message-ID: <1450973186.3554.13.camel@perches.com> (raw)
In-Reply-To: <20151224104946.GA15381@IND12F0122>
On Thu, 2015-12-24 at 10:49 +0000, Gujulan Elango, Hari Prasath (H.) wrote:
> From: Hari Prasath Gujulan Elango <hgujulan@visteon.com>
>
> Replace multiple if..else if..statements with simple table lookup in two
> functions.
>
> Signed-off-by: Hari Prasath Gujulan Elango <hgujulan@visteon.com>
> ---
> drivers/staging/most/mostcore/core.c | 39 ++++++++++++++++++++----------------
> 1 file changed, 22 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/staging/most/mostcore/core.c b/drivers/staging/most/mostcore/core.c
> index ed1ed25..7b4636b 100644
> --- a/drivers/staging/most/mostcore/core.c
> +++ b/drivers/staging/most/mostcore/core.c
> @@ -82,6 +82,14 @@ struct most_inst_obj {
> struct list_head list;
> };
>
> +static const struct {
> + int most_ch_data_type;
> + char *name;
> +} ch_data_type[] = { { MOST_CH_CONTROL, "control\n" },
> + { MOST_CH_ASYNC, "async\n" },
> + { MOST_CH_SYNC, "sync\n" },
> + { MOST_CH_ISOC_AVP, "isoc_avp\n"} };
> +
> #define to_inst_obj(d) container_of(d, struct most_inst_obj, kobj)
>
> /**
> @@ -414,14 +422,12 @@ static ssize_t show_set_datatype(struct most_c_obj *c,
> struct most_c_attr *attr,
> char *buf)
> {
> - if (c->cfg.data_type & MOST_CH_CONTROL)
> - return snprintf(buf, PAGE_SIZE, "control\n");
> - else if (c->cfg.data_type & MOST_CH_ASYNC)
> - return snprintf(buf, PAGE_SIZE, "async\n");
> - else if (c->cfg.data_type & MOST_CH_SYNC)
> - return snprintf(buf, PAGE_SIZE, "sync\n");
> - else if (c->cfg.data_type & MOST_CH_ISOC_AVP)
> - return snprintf(buf, PAGE_SIZE, "isoc_avp\n");
> + int i;
> +
> + for (i = 0; i < ARRAY_SIZE(ch_data_type); i++) {
> + if (c->cfg.data_type & ch_data_type[i].most_ch_data_type)
> + return snprintf(buf, PAGE_SIZE, ch_data_type[i].name);
> + }
> return snprintf(buf, PAGE_SIZE, "unconfigured\n");
> }
>
> @@ -430,15 +436,14 @@ static ssize_t store_set_datatype(struct most_c_obj *c,
> const char *buf,
> size_t count)
> {
> - if (!strcmp(buf, "control\n")) {
> - c->cfg.data_type = MOST_CH_CONTROL;
> - } else if (!strcmp(buf, "async\n")) {
> - c->cfg.data_type = MOST_CH_ASYNC;
> - } else if (!strcmp(buf, "sync\n")) {
> - c->cfg.data_type = MOST_CH_SYNC;
> - } else if (!strcmp(buf, "isoc_avp\n")) {
> - c->cfg.data_type = MOST_CH_ISOC_AVP;
> - } else {
> + int i;
> +
> + for (i = 0; i < ARRAY_SIZE(ch_data_type); i++) {
> + if (!strcmp(buf, ch_data_type[i].name))
> + c->cfg.data_type = ch_data_type[i].most_ch_data_type;
Missing braces and break;
> + }
> +
> + if (i == ARRAY_SIZE(ch_data_type)) {
> pr_info("WARN: invalid attribute settings\n");
> return -EINVAL;
> }
This seems like a lot of code for a simple test.
next prev parent reply other threads:[~2015-12-24 16:06 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-24 10:49 [PATCH] staging: most: replace multiple if..else with table lookup Gujulan Elango, Hari Prasath (H.)
2015-12-24 16:06 ` Joe Perches [this message]
2015-12-30 10:44 ` Gujulan Elango, Hari Prasath (H.)
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=1450973186.3554.13.camel@perches.com \
--to=joe@perches.com \
--cc=adrianremonda@gmail.com \
--cc=andrey.shvetsov@k2l.de \
--cc=christian.gromm@microchip.com \
--cc=devel@driverdev.osuosl.org \
--cc=gregkh@linuxfoundation.org \
--cc=hgujulan@visteon.com \
--cc=linux-kernel@vger.kernel.org \
--cc=sudipm.mukherjee@gmail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox