Module capsules::nonvolatile_to_pages [] [src]

Map arbitrary nonvolatile reads and writes to page operations.

This splits non-page-aligned reads and writes into a series of page level reads and writes. While it is handling a read or write it returns EBUSY to all additional requests.

This module is designed to be used on top of any flash storage and below any user of NonvolatileStorage. This module handles different sized pages.

hil::nonvolatile_storage::NonvolatileStorage
               ┌─────────────┐
               │             │
               │ This module │
               │             │
               └─────────────┘
              hil::flash::Flash

Usage

pub static mut PAGEBUFFER: sam4l::flashcalw::Sam4lPage = sam4l::flashcalw::Sam4lPage::new();
let nv_to_page = static_init!(
    capsules::nonvolatile_to_pages::NonvolatileToPages<'static, sam4l::flashcalw::FLASHCALW>,
    capsules::nonvolatile_to_pages::NonvolatileToPages::new(
        &mut sam4l::flashcalw::FLASH_CONTROLLER,
        &mut PAGEBUFFER));
hil::flash::HasClient::set_client(&sam4l::flashcalw::FLASH_CONTROLLER, nv_to_page);

Reexports

use core::cell::Cell;
use core::cmp;
use kernel::ReturnCode;
use kernel::common::take_cell::TakeCell;
use kernel::hil;

Structs

NonvolatileToPages

Enums

State

This module is either waiting to do something, or handling a read/write.