Trait AsPageIter

Source
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§

Source

type Iter<'a>: Iterator<Item = BorrowedPage<'a>> where Self: 'a

The Iterator type, e.g. VmallocPageIter.

Required Methods§

Source

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)? };
Source§

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)? };
Source§

type Iter<'a> = VmallocPageIter<'a> where T: 'a