gem5  v20.1.0.0
Public Member Functions | Private Attributes | List of all members
ChunkGenerator Class Reference

This class takes an arbitrary memory region (address/length pair) and generates a series of appropriately (e.g. More...

#include <chunk_generator.hh>

Public Member Functions

 ChunkGenerator (Addr _startAddr, unsigned totalSize, unsigned _chunkSize)
 Constructor. More...
 
Addr addr () const
 Return starting address of current chunk. More...
 
unsigned size () const
 Return size in bytes of current chunk. More...
 
unsigned complete () const
 Number of bytes we have already chunked up. More...
 
bool done () const
 Are we done? That is, did the last call to next() advance past the end of the region? More...
 
bool last () const
 Is this the last chunk? More...
 
bool next ()
 Advance generator to next chunk. More...
 

Private Attributes

Addr curAddr
 The starting address of the current chunk. More...
 
Addr nextAddr
 The starting address of the next chunk (after the current one). More...
 
unsigned curSize
 The size of the current chunk (in bytes). More...
 
unsigned sizeLeft
 The number of bytes remaining in the region after the current chunk. More...
 
const Addr startAddr
 The start address so we can calculate offset in writing block. More...
 
const unsigned chunkSize
 The maximum chunk size, e.g., the cache block size or page size. More...
 

Detailed Description

This class takes an arbitrary memory region (address/length pair) and generates a series of appropriately (e.g.

block- or page-) aligned chunks covering the same region.

Example usage:

for (ChunkGenerator gen(addr, size, chunkSize); !gen.done(); gen.next()) {
doSomethingChunky(gen.addr(), gen.size());
}

Definition at line 55 of file chunk_generator.hh.

Member Data Documentation

◆ chunkSize

const unsigned ChunkGenerator::chunkSize
private

The maximum chunk size, e.g., the cache block size or page size.

Definition at line 69 of file chunk_generator.hh.

Referenced by ChunkGenerator(), and next().

◆ curAddr

Addr ChunkGenerator::curAddr
private

The starting address of the current chunk.

Definition at line 59 of file chunk_generator.hh.

Referenced by addr(), ChunkGenerator(), complete(), and next().

◆ curSize

unsigned ChunkGenerator::curSize
private

The size of the current chunk (in bytes).

Definition at line 63 of file chunk_generator.hh.

Referenced by ChunkGenerator(), done(), next(), and size().

◆ nextAddr

Addr ChunkGenerator::nextAddr
private

The starting address of the next chunk (after the current one).

Definition at line 61 of file chunk_generator.hh.

Referenced by ChunkGenerator(), and next().

◆ sizeLeft

unsigned ChunkGenerator::sizeLeft
private

The number of bytes remaining in the region after the current chunk.

Definition at line 65 of file chunk_generator.hh.

Referenced by ChunkGenerator(), last(), and next().

◆ startAddr

const Addr ChunkGenerator::startAddr
private

The start address so we can calculate offset in writing block.

Definition at line 67 of file chunk_generator.hh.

Referenced by ChunkGenerator(), and complete().


The documentation for this class was generated from the following file:
ChunkGenerator::chunkSize
const unsigned chunkSize
The maximum chunk size, e.g., the cache block size or page size.
Definition: chunk_generator.hh:69
ChunkGenerator::size
unsigned size() const
Return size in bytes of current chunk.
Definition: chunk_generator.hh:121
ChunkGenerator::addr
Addr addr() const
Return starting address of current chunk.
Definition: chunk_generator.hh:115
ChunkGenerator::done
bool done() const
Are we done? That is, did the last call to next() advance past the end of the region?
Definition: chunk_generator.hh:137
ChunkGenerator
This class takes an arbitrary memory region (address/length pair) and generates a series of appropria...
Definition: chunk_generator.hh:55

Generated on Wed Sep 30 2020 14:02:22 for gem5 by doxygen 1.8.17