rust: page: define trait AsPageIter
The AsPageIter trait provides a common interface for types that provide a page iterator, such as VmallocPageIter. Subsequent patches will leverage this to let VBox and VVec provide a VmallocPageIter though this trait. Reviewed-by: Alice Ryhl <aliceryhl@google.com> Reviewed-by: Alexandre Courbot <acourbot@nvidia.com> Tested-by: Alexandre Courbot <acourbot@nvidia.com> Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com> Link: https://lore.kernel.org/r/20250820145434.94745-5-dakr@kernel.org Signed-off-by: Danilo Krummrich <dakr@kernel.org>
This commit is contained in:
parent
7937dca770
commit
866ec3bab1
|
|
@ -103,6 +103,18 @@ impl<'a> Deref for BorrowedPage<'a> {
|
|||
}
|
||||
}
|
||||
|
||||
/// Trait to be implemented by types which provide an [`Iterator`] implementation of
|
||||
/// [`BorrowedPage`] items, such as [`VmallocPageIter`](kernel::alloc::allocator::VmallocPageIter).
|
||||
pub trait AsPageIter {
|
||||
/// The [`Iterator`] type, e.g. [`VmallocPageIter`](kernel::alloc::allocator::VmallocPageIter).
|
||||
type Iter<'a>: Iterator<Item = BorrowedPage<'a>>
|
||||
where
|
||||
Self: 'a;
|
||||
|
||||
/// Returns an [`Iterator`] of [`BorrowedPage`] items over all pages owned by `self`.
|
||||
fn page_iter(&mut self) -> Self::Iter<'_>;
|
||||
}
|
||||
|
||||
/// A pointer to a page that owns the page allocation.
|
||||
///
|
||||
/// # Invariants
|
||||
|
|
|
|||
Loading…
Reference in New Issue