Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1297821 > unrolled thread
| Started by | "Gujulan Elango, Hari Prasath (H.)" <hgujulan@visteon.com> |
|---|---|
| First post | 2015-12-24 12:30 +0100 |
| Last post | 2015-12-30 11:50 +0100 |
| Articles | 3 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH] staging: most: replace multiple if..else with table lookup "Gujulan Elango, Hari Prasath (H.)" <hgujulan@visteon.com> - 2015-12-24 12:30 +0100
Re: [PATCH] staging: most: replace multiple if..else with table lookup Joe Perches <joe@perches.com> - 2015-12-24 17:10 +0100
Re: [PATCH] staging: most: replace multiple if..else with table lookup "Gujulan Elango, Hari Prasath (H.)" <hgujulan@visteon.com> - 2015-12-30 11:50 +0100
| From | "Gujulan Elango, Hari Prasath (H.)" <hgujulan@visteon.com> |
|---|---|
| Date | 2015-12-24 12:30 +0100 |
| Subject | [PATCH] staging: most: replace multiple if..else with table lookup |
| Message-ID | <qJcfM-65B-11@gated-at.bofh.it> |
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;
+ }
+
+ if (i == ARRAY_SIZE(ch_data_type)) {
pr_info("WARN: invalid attribute settings\n");
return -EINVAL;
}
--
1.9.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Joe Perches <joe@perches.com> |
|---|---|
| Date | 2015-12-24 17:10 +0100 |
| Subject | Re: [PATCH] staging: most: replace multiple if..else with table lookup |
| Message-ID | <qJgCM-u9-57@gated-at.bofh.it> |
| In reply to | #1297821 |
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.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | "Gujulan Elango, Hari Prasath (H.)" <hgujulan@visteon.com> |
|---|---|
| Date | 2015-12-30 11:50 +0100 |
| Subject | Re: [PATCH] staging: most: replace multiple if..else with table lookup |
| Message-ID | <qLmum-5sY-11@gated-at.bofh.it> |
| In reply to | #1297984 |
On Thu, Dec 24, 2015 at 08:06:26AM -0800, Joe Perches wrote:
> 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.
>
Hello Joe,
I have sent a v2 for this patch with corrections made.
Regards,
Hari Prasath--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web