On Thu, 12 Sep 2024 00:52:57 +0200 Danilo Krummrich <dakr@xxxxxxxxxx> wrote: > Provide a simple helper function to check whether given flags do > contain one or multiple other flags. > > This is used by a subsequent patch implementing the Cmalloc `Allocator` > to check for __GFP_ZERO. > > Reviewed-by: Alice Ryhl <aliceryhl@xxxxxxxxxx> > Reviewed-by: Benno Lossin <benno.lossin@xxxxxxxxx> > Signed-off-by: Danilo Krummrich <dakr@xxxxxxxxxx> Reviewed-by: Gary Guo <gary@xxxxxxxxxxx> > --- > rust/kernel/alloc.rs | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/rust/kernel/alloc.rs b/rust/kernel/alloc.rs > index aabdf80e4f7b..caa0b9dfac87 100644 > --- a/rust/kernel/alloc.rs > +++ b/rust/kernel/alloc.rs > @@ -34,7 +34,7 @@ > /// They can be combined with the operators `|`, `&`, and `!`. > /// > /// Values can be used from the [`flags`] module. > -#[derive(Clone, Copy)] > +#[derive(Clone, Copy, PartialEq)] > pub struct Flags(u32); > > impl Flags { > @@ -42,6 +42,11 @@ impl Flags { > pub(crate) fn as_raw(self) -> u32 { > self.0 > } > + > + /// Check whether `flags` is contained in `self`. > + pub fn contains(self, flags: Flags) -> bool { > + (self & flags) == flags > + } > } > > impl core::ops::BitOr for Flags {