Struct TableBuilder

Source
pub struct TableBuilder { /* private fields */ }
Expand description

CPU frequency table builder.

This is used by the CPU frequency drivers to build a frequency table dynamically.

§Examples

The following example demonstrates how to create a CPU frequency table.

use kernel::cpufreq::{TableBuilder, TableIndex};
use kernel::clk::Hertz;

let mut builder = TableBuilder::new();

// Adds few entries to the table.
builder.add(Hertz::from_mhz(700), 0, 1).unwrap();
builder.add(Hertz::from_mhz(800), 2, 3).unwrap();
builder.add(Hertz::from_mhz(900), 4, 5).unwrap();
builder.add(Hertz::from_ghz(1), 6, 7).unwrap();

let table = builder.to_table().unwrap();

// SAFETY: Index values correspond to valid entries in the table.
let (index0, index2) = unsafe { (TableIndex::new(0), TableIndex::new(2)) };

assert_eq!(table.freq(index0), Ok(Hertz::from_mhz(700)));
assert_eq!(table.flags(index0), 0);
assert_eq!(table.data(index0), 1);

assert_eq!(table.freq(index2), Ok(Hertz::from_mhz(900)));
assert_eq!(table.flags(index2), 4);
assert_eq!(table.data(index2), 5);

Implementations§

Source§

impl TableBuilder

Source

pub fn new() -> Self

Creates a new instance of TableBuilder.

Source

pub fn add(&mut self, freq: Hertz, flags: u32, driver_data: u32) -> Result<()>

Adds a new entry to the table.

Source

pub fn to_table(self) -> Result<TableBox>

Consumes the TableBuilder and returns TableBox.

Trait Implementations§

Source§

impl Default for TableBuilder

Source§

fn default() -> TableBuilder

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, E> Init<T, E> for T

Source§

unsafe fn __init(self, slot: *mut T) -> Result<(), E>

Initializes slot. Read more
Source§

fn chain<F>(self, f: F) -> ChainInit<Self, F, T, E>
where F: FnOnce(&mut T) -> Result<(), E>,

First initializes the value using self then calls the function f with the initialized value. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, E> PinInit<T, E> for T

Source§

unsafe fn __pinned_init(self, slot: *mut T) -> Result<(), E>

Initializes slot. Read more
Source§

fn pin_chain<F>(self, f: F) -> ChainPinInit<Self, F, T, E>
where F: FnOnce(Pin<&mut T>) -> Result<(), E>,

First initializes the value using self then calls the function f with the initialized value. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.