Re: [PATCH v2] lib/string-choice: add yesno(), onoff(), enableddisabled(), plural() helpers

From: Rasmus Villemoes
Date: Mon Sep 30 2019 - 10:31:08 EST


On 30/09/2019 16.18, Jani Nikula wrote:
> The kernel has plenty of ternary operators to choose between constant
> strings, such as condition ? "yes" : "no", as well as value == 1 ? "" :
> "s":
>
>
> ---
>
> v2: add string-choice.[ch] to not clutter kernel.h and to actually save
> space on string constants.
>
> +EXPORT_SYMBOL(enableddisabled);
> +
> +const char *plural(long v)
> +{
> + return v == 1 ? "" : "s";
> +}
> +EXPORT_SYMBOL(plural);
>


Say what? I'll bet you a beer that this is a net loss: You're adding
hundreds of bytes of export symbol overhead, plus forcing gcc to emit
actual calls at the call sites, with all the register saving/restoring
that implies.

Please just do this as static inlines. As I said, the linker is
perfectly capable of merging string literals across translation units
(but of course not between vmlinux and modules), so any built-in code
that uses those helpers (or open-codes them, doesn't matter) will
automatically share those literals.

Rasmus