gem5
|
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... | |
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:
Definition at line 57 of file chunk_generator.hh.
|
inline |
Constructor.
_startAddr | The starting address of the region. |
totalSize | The total size of the region. |
_chunkSize | The size/alignment of chunks into which the region should be decomposed. |
Definition at line 81 of file chunk_generator.hh.
References chunkSize, curAddr, curSize, isPowerOf2(), nextAddr, roundUp(), sizeLeft, and startAddr.
|
inline |
Return starting address of current chunk.
Definition at line 111 of file chunk_generator.hh.
References curAddr.
Referenced by IdeDisk::doDmaRead(), and IdeDisk::doDmaWrite().
|
inline |
Number of bytes we have already chunked up.
Definition at line 116 of file chunk_generator.hh.
References curAddr, and startAddr.
Referenced by IdeDisk::doDmaRead(), and IdeDisk::doDmaWrite().
|
inline |
Are we done? That is, did the last call to next() advance past the end of the region?
Definition at line 123 of file chunk_generator.hh.
References curSize.
Referenced by ArmISA::RemoteGDB::acc(), Shader::AccessMem(), brkFunc(), CopyStringIn(), DmaPort::dmaAction(), IdeDisk::doDmaRead(), IdeDisk::doDmaWrite(), FSTranslatingPortProxy::memsetBlob(), FSTranslatingPortProxy::readBlob(), PortProxy::readBlob(), SETranslatingPortProxy::tryMemsetBlob(), SETranslatingPortProxy::tryReadBlob(), SETranslatingPortProxy::tryWriteBlob(), FSTranslatingPortProxy::writeBlob(), and PortProxy::writeBlob().
|
inline |
Is this the last chunk?
Definition at line 129 of file chunk_generator.hh.
References sizeLeft.
|
inline |
Advance generator to next chunk.
Definition at line 137 of file chunk_generator.hh.
References chunkSize, curAddr, curSize, nextAddr, and sizeLeft.
Referenced by IdeDisk::doDmaRead(), and IdeDisk::doDmaWrite().
|
inline |
Return size in bytes of current chunk.
Definition at line 113 of file chunk_generator.hh.
References curSize.
Referenced by IdeDisk::doDmaRead(), and IdeDisk::doDmaWrite().
|
private |
The maximum chunk size, e.g., the cache block size or page size.
Definition at line 71 of file chunk_generator.hh.
Referenced by ChunkGenerator(), and next().
|
private |
The starting address of the current chunk.
Definition at line 61 of file chunk_generator.hh.
Referenced by addr(), ChunkGenerator(), complete(), and next().
|
private |
The size of the current chunk (in bytes).
Definition at line 65 of file chunk_generator.hh.
Referenced by ChunkGenerator(), done(), next(), and size().
|
private |
The starting address of the next chunk (after the current one).
Definition at line 63 of file chunk_generator.hh.
Referenced by ChunkGenerator(), and next().
|
private |
The number of bytes remaining in the region after the current chunk.
Definition at line 67 of file chunk_generator.hh.
Referenced by ChunkGenerator(), last(), and next().
|
private |
The start address so we can calculate offset in writing block.
Definition at line 69 of file chunk_generator.hh.
Referenced by ChunkGenerator(), and complete().