On Thu, 2015-12-24 at 10:49 +0000, Gujulan Elango, Hari Prasath (H.) wrote: > From: Hari Prasath Gujulan Elango <hgujulan@xxxxxxxxxxx> > > Replace multiple if..else if..statements with simple table lookup in two > functions. > > Signed-off-by: Hari Prasath Gujulan Elango <hgujulan@xxxxxxxxxxx> > --- > 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. _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel