memory_block::block_bits Class Reference

List of all members.

Detailed Description

A helper class for the chip-allocator class, block.

This class tracks the bookkeeping of chip allocation while leaving the corresponding memory management to someone else. The implementation requires that chip allocation be single-threaded (presumably by some owner thread), but is thread-safe with respect to deallocation.

A given "chip" may be in one of three states:

Allocation is double-buffered in a sense: at the beginning of each allocation round, the owning thread unions the current set of zombie chips into the usable set; in-use chips are ignored.

The class has two members to support higher-level functionality:

_owner: an opaque pointer which is used to verify that blocks are being released properly It is set by the block_list but never inspected. It is used by derived classes.

_next: an embedded linked list node for use by the owner and otherwise ignored by the implementation

Definition at line 128 of file mem_block.h.

Public Types

enum  

Public Member Functions

NORET block_bits (size_t chip_count)
 Construct bitmaps for chip_count chips. Used by block_of_chips.
size_t acquire_contiguous (size_t chip_count)
 acquire chip_count contiguous chips by finding adjacent bits in _usable_chips
void release_contiguous (size_t idx, size_t chip_count)
 release chip_count contiguous chips by setting the adjacent bits in _zombie_chips
size_t zombie_count () const
 Return number of released-but-as-yet-unusable blocks.
size_t usable_count () const
 Return number of usable blocks.
void recycle ()
 Make the zombied (released but not yet reusable) chips available.
void fake_full ()
 Make the block advertise that it has nothing to give. This is an optimization; used in block_list::block_list (q.v.).


The documentation for this class was generated from the following file:
Generated on Mon Jan 2 15:14:28 2012 for Shore Storage Manager by  doxygen 1.4.7