Re: [PATCH V2] fork: Improve error message for corrupted page tables

From: Dave Hansen
Date: Tue Aug 06 2019 - 12:30:48 EST


On 8/5/19 8:05 PM, Sai Praneeth Prakhya wrote:
> +static const char * const resident_page_types[NR_MM_COUNTERS] = {
> + [MM_FILEPAGES] = "MM_FILEPAGES",
> + [MM_ANONPAGES] = "MM_ANONPAGES",
> + [MM_SWAPENTS] = "MM_SWAPENTS",
> + [MM_SHMEMPAGES] = "MM_SHMEMPAGES",
> +};

One trick to ensure that this gets updated if the names are ever
updated. You can do:

#define NAMED_ARRAY_INDEX(x) [x] = __stringify(x),

and

static const char * const resident_page_types[NR_MM_COUNTERS] = {
NAMED_ARRAY_INDEX(MM_FILE_PAGES),
NAMED_ARRAY_INDEX(MM_SHMEMPAGES),
...
};

That makes sure that any name changes make it into the strings. Then
stick a:

BUILD_BUG_ON(NR_MM_COUNTERS != ARRAY_SIZE(resident_page_types));

somewhere. That makes sure that any new array indexes get a string
added in the array. Otherwise you get nice, early, compile-time errors.