---------------------------------------------------------------------
CLASS: PagedSpaceBitmapMap --GKG
PUBLIC METHODS:
PagedSpaceBitmapMap() - Constructor which requires a
SpaceBitmapDesc, the block number where
it is located in the partition, and the
block size of the medium.
pageSize() - Returns the size (in bytes) of the pages
into which the bitmap has been segmented.
The actual size of the last page may be
smaller than this value as it contains
the residue. This value is always an even
muliple of the logical blocks size.
numPages() - Returns the number of pages into which
the bitmap has been segmented.
blocksPerPage() - Returns the number of logical blocks that
fill the page size.
pageStartBlock() - Returns the logical block number of the
first block in the specified page.
pageAbsToRel() - Converts a logical block number to a
block offset relative to the start of the
page.
pageRelToAbs() - Converts a block number relative to the
start of the page to an absolute logical
block number.
pageStartByteOffset() - Returns the offset (in bytes) to the
beginning of the bitmap data withing the
specified page. This value should be zero
except when specifing page zero.
pageNum() - Returns the page number of the page
containing the specified bit address.
pageBitOffset() - Returns the residule bit offset within a
page of a specified bit address.
pageBitAddr() - Returns the bit address of a specified
bit offset within a specified page.
pageBitSize() - Returns the size of the specified page in
bits. The value is the same for all pages
except possibly the last page (which may
be smaller than the others).
pageByteSize() - Returns the size of the specified page in
bytes. The value except possibly the last
page.
pageBlockSize() - Returns the size of the specified page in
logical blocks. The value is the same
for all pages except possibly the last
page.
pageBitResidue() - Returns the number of residule bits in
the last byte of the specified page (can
only be non-zero for the last page).
pageNumBits() - Returns the number of bits in the
specified page representing bitmap data.
Excludes space used by the header
(differentiating it from pageBitSize() ).
pageOffsetToBufferPos() - Converts a bit address within a page into
a bit offset within the page memory
buffer.
bufferPosToPageOffset() - Converts a bit offset within the page
memory buffer to a bit address within the
page.
bufferBlockOffset() - Returns the block offset within the page
memory buffer of a given bit offset
within a given page within a specified
block.
USAGE NOTES:
This is to be used AFTER using the SpaceBitmapDesc, in order to
access individual bits in the SpaceBitmap. It merely provides
information about where bits are located, and leaves the task of
reading and writing individual pages of the bitmap up to the user.
It supports arbitrary-sized paging of bitmaps, by supporting an
optional BlockNum in the byteOffset() method.
Once it is constructed, the SpaceBitmapDesc passed in may be
destroyed, since this object contains neither a pointer nor a
reference to it, but rather extracts all the information it needs
at that time.
NOTE that the first block of the SpaceBitmap contains the
SpaceBitmapDesc (at its beginning). Also NOTE that this class
takes that descriptor's presence into account, so that it will
NEVER return values allowing the SpaceBitmapDesc to be
modified. Therefore, if only the addresses returned by this class
are used for modifying bits, the first block in the bitmap area
may be read/modified/written with no risk to the SpaceBitmapDesc
becoming corrupted. Thus, the user may view this as presenting the
entire SpaceBitmap area as ONLY a bitmap which may be easily paged
in and out to disk.
----------------------------------------------------------------------