BA / Mbed OS BaBoRo1
Embed: (wiki syntax)

« Back to documentation index

ProfilingBlockDevice Class Reference

ProfilingBlockDevice Class Reference

Block device for measuring storage operations of another block device. More...

#include <ProfilingBlockDevice.h>

Inherits BlockDevice.

Public Member Functions

 ProfilingBlockDevice (BlockDevice *bd)
 Lifetime of the memory block device.
virtual ~ProfilingBlockDevice ()
 Lifetime of a block device.
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.
void reset ()
 Reset the current profile counts to zero.
bd_size_t get_read_count () const
 Get number of bytes that have been read from the block device.
bd_size_t get_program_count () const
 Get number of bytes that have been programed to the block device.
bd_size_t get_erase_count () const
 Get number of bytes that have been erased from the block 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

Block device for measuring storage operations of another block device.

  #include "mbed.h"
  #include "HeapBlockDevice.h"
  #include "ProfilingBlockDevice.h"

  // Create a heap block device and profiling block device
  HeapBlockDevice mem(64*512, 512);
  ProfilingBlockDevice profiler(&mem);

  // do block device work....

  printf("read count: %lld\n", profiler.get_read_count());
  printf("program count: %lld\n", profiler.get_program_count());
  printf("erase count: %lld\n", profiler.get_erase_count());

Definition at line 47 of file ProfilingBlockDevice.h.


Constructor & Destructor Documentation

Lifetime of the memory block device.

Parameters:
bdBlock device to back the ProfilingBlockDevice

Definition at line 20 of file ProfilingBlockDevice.cpp.

virtual ~ProfilingBlockDevice (  ) [virtual]

Lifetime of a block device.

Definition at line 58 of file ProfilingBlockDevice.h.


Member Function Documentation

int deinit (  ) [virtual]

Deinitialize a block device.

Returns:
0 on success or a negative error code on failure
Note:
The init and deinit functions do not effect profile counts

Implements BlockDevice.

Definition at line 33 of file ProfilingBlockDevice.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:
addrAddress of block to begin erasing
sizeSize 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 61 of file ProfilingBlockDevice.cpp.

bd_size_t get_erase_count (  ) const

Get number of bytes that have been erased from the block device.

Returns:
The number of bytes that have been erased from the block device

Definition at line 117 of file ProfilingBlockDevice.cpp.

bd_size_t get_erase_size (  ) const [virtual]

Get the size of an 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 80 of file ProfilingBlockDevice.cpp.

bd_size_t get_erase_size ( bd_addr_t  addr ) const [virtual]

Get the size of an erasable block given address.

Parameters:
addrAddress 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 85 of file ProfilingBlockDevice.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 you can program storage containing that value 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 90 of file ProfilingBlockDevice.cpp.

bd_size_t get_program_count (  ) const

Get number of bytes that have been programed to the block device.

Returns:
The number of bytes that have been programed to the block device

Definition at line 112 of file ProfilingBlockDevice.cpp.

bd_size_t get_program_size (  ) const [virtual]

Get the size of a programmable block.

Returns:
Size of a programmable block in bytes
Note:
Must be a multiple of the read size

Implements BlockDevice.

Definition at line 75 of file ProfilingBlockDevice.cpp.

bd_size_t get_read_count (  ) const

Get number of bytes that have been read from the block device.

Returns:
The number of bytes that have been read from the block device

Definition at line 107 of file ProfilingBlockDevice.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 70 of file ProfilingBlockDevice.cpp.

int init (  ) [virtual]

Initialize a block device.

Returns:
0 on success or a negative error code on failure
Note:
The init and deinit functions do not effect profile counts

Implements BlockDevice.

Definition at line 28 of file ProfilingBlockDevice.cpp.

bool is_valid_erase ( bd_addr_t  addr,
bd_size_t  size 
) const [inherited]

Convenience function for checking block erase validity.

Parameters:
addrAddress of block to begin erasing
sizeSize 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:
addrAddress of block to begin writing to
sizeSize 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:
addrAddress of block to begin reading from
sizeSize 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:
bufferBuffer of data to write to blocks
addrAddress of block to begin writing to
sizeSize 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 52 of file ProfilingBlockDevice.cpp.

int read ( void *  buffer,
bd_addr_t  addr,
bd_size_t  size 
) [virtual]

Read blocks from a block device.

Parameters:
bufferBuffer to read blocks into
addrAddress of block to begin reading from
sizeSize 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 43 of file ProfilingBlockDevice.cpp.

void reset ( void   )

Reset the current profile counts to zero.

Definition at line 100 of file ProfilingBlockDevice.cpp.

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 95 of file ProfilingBlockDevice.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 38 of file ProfilingBlockDevice.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:
addrAddress of block to mark as unused
sizeSize 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.