Implements dynamically resizable prefetching pool. More...
#include <prefetch_pool.h>
Public Member Functions | |
prefetch_pool (unsigned_type init_size=1) | |
Constructs pool. | |
virtual | ~prefetch_pool () |
Waits for completion of all ongoing read requests and frees memory. | |
unsigned_type | size () const |
Returns number of owned blocks. | |
bool | hint (bid_type bid) |
Gives a hint for prefetching a block. | |
request_ptr | read (block_type *&block, bid_type bid) |
Reads block. If this block is cached block is not read but passed from the cache. | |
unsigned_type | resize (unsigned_type new_size) |
Resizes size of the pool. |
Implements dynamically resizable prefetching pool.
prefetch_pool< BlockType >::prefetch_pool | ( | unsigned_type | init_size = 1 |
) | [inline, explicit] |
Constructs pool.
init_size | initial number of blocks in the pool |
virtual prefetch_pool< BlockType >::~prefetch_pool | ( | ) | [inline, virtual] |
Waits for completion of all ongoing read requests and frees memory.
bool prefetch_pool< BlockType >::hint | ( | bid_type | bid | ) | [inline] |
Gives a hint for prefetching a block.
bid | address of a block to be prefetched |
true
if there was a free block to do prefetch and prefetching was scheduled, false
otherwise read
method) calling hint
function has no effect Referenced by queue< ValTp, BlkSz, AllocStr, SzTp >::pop(), and grow_shrink_stack2< Config_ >::set_prefetch_aggr().
request_ptr prefetch_pool< BlockType >::read | ( | block_type *& | block, | |
bid_type | bid | |||
) | [inline] |
Reads block. If this block is cached block is not read but passed from the cache.
block | block object, where data to be read to. If block was cached block 's ownership goes to the pool and block from cache is returned in block value. | |
bid | address of the block |
block
parameter must be allocated dynamically using new
. Referenced by queue< ValTp, BlkSz, AllocStr, SzTp >::pop(), and grow_shrink_stack2< Config_ >::set_prefetch_aggr().
unsigned_type prefetch_pool< BlockType >::resize | ( | unsigned_type | new_size | ) | [inline] |
Resizes size of the pool.
new_size | desired size of the pool. If some blocks are used for prefetching, these blocks can't be freed. Only free blocks (not in prefetching) can be freed by reducing the size of the pool calling this method. |
Referenced by queue< ValTp, BlkSz, AllocStr, SzTp >::queue().
unsigned_type prefetch_pool< BlockType >::size | ( | ) | const [inline] |
Returns number of owned blocks.
Referenced by queue< ValTp, BlkSz, AllocStr, SzTp >::queue(), and prefetch_pool< block_type >::resize().