pub trait AsPageIter {
    type Iter<'a>: Iterator<Item = BorrowedPage<'a>>
       where Self: 'a;
    // Required method
    fn page_iter(&mut self) -> Self::Iter<'_>;
}Expand description
Trait to be implemented by types which provide an Iterator implementation of
BorrowedPage items, such as VmallocPageIter.
Required Associated Types§
Sourcetype Iter<'a>: Iterator<Item = BorrowedPage<'a>>
where
    Self: 'a
 
type Iter<'a>: Iterator<Item = BorrowedPage<'a>> where Self: 'a
The Iterator type, e.g. VmallocPageIter.
Required Methods§
Sourcefn page_iter(&mut self) -> Self::Iter<'_>
 
fn page_iter(&mut self) -> Self::Iter<'_>
Returns an Iterator of BorrowedPage items over all pages owned by self.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.
Implementors§
Source§impl<T> AsPageIter for VBox<T>
§Examples
use kernel::alloc::allocator::VmallocPageIter;
use kernel::page::{AsPageIter, PAGE_SIZE};
let mut vbox = VBox::new((), GFP_KERNEL)?;
assert!(vbox.page_iter().next().is_none());
let mut vbox = VBox::<[u8; PAGE_SIZE]>::new_uninit(GFP_KERNEL)?;
let page = vbox.page_iter().next().expect("At least one page should be available.\n");
// SAFETY: There is no concurrent read or write to the same page.
unsafe { page.fill_zero_raw(0, PAGE_SIZE)? };
 
impl<T> AsPageIter for VBox<T>
§Examples
use kernel::alloc::allocator::VmallocPageIter;
use kernel::page::{AsPageIter, PAGE_SIZE};
let mut vbox = VBox::new((), GFP_KERNEL)?;
assert!(vbox.page_iter().next().is_none());
let mut vbox = VBox::<[u8; PAGE_SIZE]>::new_uninit(GFP_KERNEL)?;
let page = vbox.page_iter().next().expect("At least one page should be available.\n");
// SAFETY: There is no concurrent read or write to the same page.
unsafe { page.fill_zero_raw(0, PAGE_SIZE)? };type Iter<'a> = VmallocPageIter<'a> where T: 'a
Source§impl<T> AsPageIter for VVec<T>
§Examples
use kernel::alloc::allocator::VmallocPageIter;
use kernel::page::{AsPageIter, PAGE_SIZE};
let mut vec = VVec::<u8>::new();
assert!(vec.page_iter().next().is_none());
vec.reserve(PAGE_SIZE, GFP_KERNEL)?;
let page = vec.page_iter().next().expect("At least one page should be available.\n");
// SAFETY: There is no concurrent read or write to the same page.
unsafe { page.fill_zero_raw(0, PAGE_SIZE)? };
 
impl<T> AsPageIter for VVec<T>
§Examples
use kernel::alloc::allocator::VmallocPageIter;
use kernel::page::{AsPageIter, PAGE_SIZE};
let mut vec = VVec::<u8>::new();
assert!(vec.page_iter().next().is_none());
vec.reserve(PAGE_SIZE, GFP_KERNEL)?;
let page = vec.page_iter().next().expect("At least one page should be available.\n");
// SAFETY: There is no concurrent read or write to the same page.
unsafe { page.fill_zero_raw(0, PAGE_SIZE)? };