Re: [RFC RFC PATCH] mm: convert VM flags from macros to enum
From: David Hildenbrand
Date: Mon Oct 13 2025 - 08:31:42 EST
On 13.10.25 13:33, Lorenzo Stoakes wrote:
On Mon, Oct 13, 2025 at 01:12:20PM +0200, David Hildenbrand wrote:
On 13.10.25 13:04, Lorenzo Stoakes wrote:
On Sat, Oct 11, 2025 at 05:30:52PM +0800, Ye Liu wrote:
From: Ye Liu <liuye@xxxxxxxxxx>
Hello MM maintainers and drgn community,
This RFC proposes to convert VM_* flags from #define macros to enum
vm_flags. The motivation comes from recent drgn development where we
encountered difficulties in implementing VM flag parsing due to the
current macro-based approach.
This isn't going to work sorry, it's not valid to have flag values as an enum
I don't follow, can you elaborate? IIRC, the compiler will use an integer
type to back the enum that will fit all values.
switch (flags) {
case VAL1:
case VAL2:
etc.
}
Is broken (compiler will say you cover all cases when you don't...)
I assume you mean theoretically, because there is no such code, right?
An enum implies independent values that exhaustively describe all state, however
these flag values are not that - they're intended to be bit fields.
Observe how we use an enum for FOLL_* flags, vm_fault_reason, fault_flag and probably other things.
But more importantly,
enum pageflags { ... :)
--
Cheers
David / dhildenb