Messages in this thread | | | From | Jani Nikula <> | Subject | Re: [PATCH v1 1/2] vsprintf: introduce %dE for error constants | Date | Mon, 26 Aug 2019 13:04:24 +0300 |
| |
On Mon, 26 Aug 2019, Jani Nikula <jani.nikula@linux.intel.com> wrote: > On Sat, 24 Aug 2019, Andrew Morton <akpm@linux-foundation.org> wrote: >>> --- a/lib/vsprintf.c >>> +++ b/lib/vsprintf.c >>> @@ -533,6 +533,192 @@ char *number(char *buf, char *end, unsigned long long num, >>> return buf; >>> } >>> >>> +#define ERRORCODE(x) { .str = #x, .err = x } >>> + >>> +static const struct { >>> + const char *str; >>> + int err; >>> +} errorcodes[] = { >> >> It's a bit of a hack, but an array of char*'s and a separate array of >> ushorts would save a bit of space. > > Or just > > #define ERRORCODE(x) [x] = #x > > static const char * const errorcodes[] = { > ERRORCODE(EPERM), > ERRORCODE(ENOENT), > ... > }; > > Saves space, faster lookup, discovers at build time why EWOULDBLOCK > would always show up as EAGAIN in the logs. We don't have holes to speak > of in the error codes.
Meh, failed to notice the range ERESTARTSYS..ERECALLCONFLICT. Other than that, it's nicer. ;)
BR, Jani.
-- Jani Nikula, Intel Open Source Graphics Center
| |