On Mon, Aug 5, 2024 at 5:22 PM 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. > > Signed-off-by: Danilo Krummrich <dakr@xxxxxxxxxx> One nit, but: Reviewed-by: Alice Ryhl <aliceryhl@xxxxxxxxxx> > 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 8a1cecc20d09..615afe69d097 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 > + } Since this type is Copy, you can do this: pub fn contains(self, flags: Flags) -> bool { (self & flags) == flags } and avoid the asterisk. Alice