On Thu, 13 Feb 2025 11:04:00 +0000 Alice Ryhl <aliceryhl@xxxxxxxxxx> wrote: > These abstractions allow you to reference a `struct mm_struct` using > both mmgrab and mmget refcounts. This is done using two Rust types: > > * Mm - represents an mm_struct where you don't know anything about the > value of mm_users. > * MmWithUser - represents an mm_struct where you know at compile time > that mm_users is non-zero. > > This allows us to encode in the type system whether a method requires > that mm_users is non-zero or not. For instance, you can always call > `mmget_not_zero` but you can only call `mmap_read_lock` when mm_users is > non-zero. > > The struct is called Mm to keep consistency with the C side. > > The ability to obtain `current->mm` is added later in this series. > > Acked-by: Lorenzo Stoakes <lorenzo.stoakes@xxxxxxxxxx> > Acked-by: Balbir Singh <balbirs@xxxxxxxxxx> > Reviewed-by: Andreas Hindborg <a.hindborg@xxxxxxxxxx> > Signed-off-by: Alice Ryhl <aliceryhl@xxxxxxxxxx> Reviewed-by: Gary Guo <gary@xxxxxxxxxxx> > --- > rust/helpers/helpers.c | 1 + > rust/helpers/mm.c | 39 +++++++++ > rust/kernel/lib.rs | 1 + > rust/kernel/mm.rs | 209 +++++++++++++++++++++++++++++++++++++++++++++++++ > 4 files changed, 250 insertions(+)