Message ID | 20240816001216.26575-22-dakr@kernel.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Generic `Allocator` support for Rust | expand |
On 16.08.24 02:11, Danilo Krummrich 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@google.com> > Signed-off-by: Danilo Krummrich <dakr@kernel.org> Reviewed-by: Benno Lossin <benno.lossin@proton.me> --- Cheers, Benno > --- > 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 1feabc817d00..5c66229a7542 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 { > -- > 2.46.0 >
diff --git a/rust/kernel/alloc.rs b/rust/kernel/alloc.rs index 1feabc817d00..5c66229a7542 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 {