My climat station
ExhaustibleBlockDevice Class Reference
Heap backed block device which simulates failures. More...
#include <ExhaustibleBlockDevice.h>
Inherits BlockDevice.
Public Member Functions | |
| ExhaustibleBlockDevice (BlockDevice *bd, uint32_t erase_cycles) | |
| Lifetime of the block device. | |
| uint32_t | get_erase_cycles (bd_addr_t addr) const |
| Get the number of erase cycles remaining on a block. | |
| void | set_erase_cycles (bd_addr_t addr, uint32_t cycles) |
| Set the number of erase cycles before failure. | |
| virtual int | init () |
| Initialize a block device. | |
| virtual int | deinit () |
| Deinitialize a block device. | |
| virtual int | sync () |
| Ensure data on storage is in sync with the driver. | |
| virtual int | read (void *buffer, bd_addr_t addr, bd_size_t size) |
| Read blocks from a block device. | |
| virtual int | program (const void *buffer, bd_addr_t addr, bd_size_t size) |
| Program blocks to a block device. | |
| virtual int | erase (bd_addr_t addr, bd_size_t size) |
| Erase blocks on a block device. | |
| virtual bd_size_t | get_read_size () const |
| Get the size of a readable block. | |
| virtual bd_size_t | get_program_size () const |
| Get the size of a programmable block. | |
| virtual bd_size_t | get_erase_size () const |
| Get the size of an erasable block. | |
| virtual bd_size_t | get_erase_size (bd_addr_t addr) const |
| Get the size of an erasable block given address. | |
| virtual int | get_erase_value () const |
| Get the value of storage when erased. | |
| virtual bd_size_t | size () const |
| Get the total size of the underlying device. | |
| virtual int | trim (bd_addr_t addr, bd_size_t size) |
| Mark blocks as no longer in use. | |
| bool | is_valid_read (bd_addr_t addr, bd_size_t size) const |
| Convenience function for checking block read validity. | |
| bool | is_valid_program (bd_addr_t addr, bd_size_t size) const |
| Convenience function for checking block program validity. | |
| bool | is_valid_erase (bd_addr_t addr, bd_size_t size) const |
| Convenience function for checking block erase validity. | |
Detailed Description
Heap backed block device which simulates failures.
Similar to heap block device but sectors wear out and are no longer programmable after a configurable number of cycles.
Definition at line 34 of file ExhaustibleBlockDevice.h.
Constructor & Destructor Documentation
| ExhaustibleBlockDevice | ( | BlockDevice * | bd, |
| uint32_t | erase_cycles | ||
| ) |
Lifetime of the block device.
- Parameters:
-
bd Block device to back the ExhaustibleBlockDevice erase_cycles Number of erase cycles before failure
Definition at line 21 of file ExhaustibleBlockDevice.cpp.
Member Function Documentation
| int deinit | ( | ) | [virtual] |
Deinitialize a block device.
- Returns:
- 0 on success or a negative error code on failure
Implements BlockDevice.
Definition at line 49 of file ExhaustibleBlockDevice.cpp.
| int erase | ( | bd_addr_t | addr, |
| bd_size_t | size | ||
| ) | [virtual] |
Erase blocks on a block device.
The state of an erased block is undefined until it has been programmed, unless get_erase_value returns a non-negative byte value
- Parameters:
-
addr Address of block to begin erasing size Size to erase in bytes, must be a multiple of erase block size
- Returns:
- 0 on success, negative error code on failure
Reimplemented from BlockDevice.
Definition at line 78 of file ExhaustibleBlockDevice.cpp.
| uint32_t get_erase_cycles | ( | bd_addr_t | addr ) | const |
Get the number of erase cycles remaining on a block.
- Parameters:
-
addr Any address in the block being queried for erase cycles
- Returns:
- Number of erase cycles remaining
| bd_size_t get_erase_size | ( | ) | const [virtual] |
Get the size of an erasable block.
- Returns:
- Size of an erasable block in bytes
Reimplemented from BlockDevice.
Definition at line 105 of file ExhaustibleBlockDevice.cpp.
| bd_size_t get_erase_size | ( | bd_addr_t | addr ) | const [virtual] |
Get the size of an erasable block given address.
- Parameters:
-
addr Address within the erasable block
- Returns:
- Size of an erasable block in bytes
- Note:
- Must be a multiple of the program size
Reimplemented from BlockDevice.
Definition at line 110 of file ExhaustibleBlockDevice.cpp.
| int get_erase_value | ( | ) | const [virtual] |
Get the value of storage when erased.
If get_erase_value returns a non-negative byte value, the underlying storage is set to that value when erased, and storage containing that value can be programmed without another erase.
- Returns:
- The value of storage when erased, or -1 if you can't rely on the value of erased storage
Reimplemented from BlockDevice.
Definition at line 115 of file ExhaustibleBlockDevice.cpp.
| bd_size_t get_program_size | ( | ) | const [virtual] |
Get the size of a programmable block.
- Returns:
- Size of a programmable block in bytes
Implements BlockDevice.
Definition at line 100 of file ExhaustibleBlockDevice.cpp.
| bd_size_t get_read_size | ( | ) | const [virtual] |
Get the size of a readable block.
- Returns:
- Size of a readable block in bytes
Implements BlockDevice.
Definition at line 95 of file ExhaustibleBlockDevice.cpp.
| int init | ( | ) | [virtual] |
Initialize a block device.
- Returns:
- 0 on success or a negative error code on failure
Implements BlockDevice.
Definition at line 31 of file ExhaustibleBlockDevice.cpp.
| bool is_valid_erase | ( | bd_addr_t | addr, |
| bd_size_t | size | ||
| ) | const [inherited] |
Convenience function for checking block erase validity.
- Parameters:
-
addr Address of block to begin erasing size Size to erase in bytes
- Returns:
- True if erase is valid for underlying block device
Definition at line 213 of file BlockDevice.h.
| bool is_valid_program | ( | bd_addr_t | addr, |
| bd_size_t | size | ||
| ) | const [inherited] |
Convenience function for checking block program validity.
- Parameters:
-
addr Address of block to begin writing to size Size to write in bytes
- Returns:
- True if program is valid for underlying block device
Definition at line 199 of file BlockDevice.h.
| bool is_valid_read | ( | bd_addr_t | addr, |
| bd_size_t | size | ||
| ) | const [inherited] |
Convenience function for checking block read validity.
- Parameters:
-
addr Address of block to begin reading from size Size to read in bytes
- Returns:
- True if read is valid for underlying block device
Definition at line 185 of file BlockDevice.h.
| int program | ( | const void * | buffer, |
| bd_addr_t | addr, | ||
| bd_size_t | size | ||
| ) | [virtual] |
Program blocks to a block device.
The blocks must have been erased prior to being programmed
- Parameters:
-
buffer Buffer of data to write to blocks addr Address of block to begin writing to size Size to write in bytes, must be a multiple of program block size
- Returns:
- 0 on success, negative error code on failure
Implements BlockDevice.
Definition at line 66 of file ExhaustibleBlockDevice.cpp.
| int read | ( | void * | buffer, |
| bd_addr_t | addr, | ||
| bd_size_t | size | ||
| ) | [virtual] |
Read blocks from a block device.
- Parameters:
-
buffer Buffer to read blocks into addr Address of block to begin reading from size Size to read in bytes, must be a multiple of read block size
- Returns:
- 0 on success, negative error code on failure
Implements BlockDevice.
Definition at line 61 of file ExhaustibleBlockDevice.cpp.
| void set_erase_cycles | ( | bd_addr_t | addr, |
| uint32_t | cycles | ||
| ) |
Set the number of erase cycles before failure.
- Parameters:
-
addr Any address in the block being queried for erase cycles cycles Erase cycles before the block malfunctions
| bd_size_t size | ( | ) | const [virtual] |
Get the total size of the underlying device.
- Returns:
- Size of the underlying device in bytes
Implements BlockDevice.
Definition at line 120 of file ExhaustibleBlockDevice.cpp.
| int sync | ( | ) | [virtual] |
Ensure data on storage is in sync with the driver.
- Returns:
- 0 on success or a negative error code on failure
Reimplemented from BlockDevice.
Definition at line 56 of file ExhaustibleBlockDevice.cpp.
| virtual int trim | ( | bd_addr_t | addr, |
| bd_size_t | size | ||
| ) | [virtual, inherited] |
Mark blocks as no longer in use.
This function provides a hint to the underlying block device that a region of blocks is no longer in use and may be erased without side effects. Erase must still be called before programming, but trimming allows flash-translation-layers to schedule erases when the device is not busy.
- Parameters:
-
addr Address of block to mark as unused size Size to mark as unused in bytes, must be a multiple of erase block size
- Returns:
- 0 on success, negative error code on failure
Definition at line 120 of file BlockDevice.h.
Generated on Tue Jul 12 2022 14:26:43 by
1.7.2
Gleb Klochkov