Hi, On 14/01/2018 07:48, Kang-Che Sung wrote: > On Sun, Jan 14, 2018 at 5:30 AM, Povilas Kanapickas <[email protected]> wrote: >> --- a/util-linux/chrt.c >> +++ b/util-linux/chrt.c >> @@ -36,17 +36,20 @@ >> #include <sched.h> >> #include "libbb.h" >> >> -static const struct { >> - int policy; >> - char name[sizeof("SCHED_OTHER")]; >> -} policies[] = { >> - {SCHED_OTHER, "SCHED_OTHER"}, >> - {SCHED_FIFO, "SCHED_FIFO"}, >> - {SCHED_RR, "SCHED_RR"}, >> - {SCHED_BATCH, "SCHED_BATCH"}, >> - {0 /* unused */, ""}, >> - {SCHED_IDLE, "SCHED_IDLE"} >> -}; >> +static const char* get_policy_name(int pol) >> +{ >> + if (pol == SCHED_OTHER) >> + return "SCHED_OTHER"; >> + if (pol == SCHED_FIFO) >> + return "SCHED_FIFO"; >> + if (pol == SCHED_RR) >> + return "SCHED_RR"; >> + if (pol == SCHED_BATCH) >> + return "SCHED_BATCH"; >> + if (pol == SCHED_IDLE) >> + return "SCHED_IDLE"; >> + return ""; >> +} >> >> static void show_min_max(int pol) >> { > > I don't like the chain of "if"s here. Have you checked the size changes on the > compiled code? > Since this SCHED policy constants are just enum values, what about using > "switch-case" statement? The problem of if-chains is that some compilers are > not smart at figuring out that the comparisons are just enums and can be > optimized. The switch-case statement will make it more clear. > > Sorry for nit-picking the code. >
Thanks a lot for suggestion. I've checked what impact it has on code size and indeed switch statement results in smaller code size in all architectures except x86. Regards, Povilas _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
