Logo Search packages:      
Sourcecode: maxdb-7.5.00 version File versions

void RTEMem_BlockDescriptor::MarkAsSplittedBlock ( RTEMem_BlockDescriptor blockWhichHasBeenSplitted,
void *  splittedChunkAddress,
SAPDB_ULong  splittedBlockCount 
) [inline]

Initialize block as splitted If a block was found in the free list for a smaller block request, the unsplitted block is splitted. A possible 'free' memory request on the free list can use this information, to free only those blocks which are not splitted. Marking a splitted block marks both the block which has been splitted and the splinter. If a splinter is further splitted its first splinter pointer is not set otherwise it points to itself. The last splinters next splinter pointer is always set to null.

Parameters:
blockWhichHasBeenSplitted [in] the block which has been splitted
splittedChunkAddress [in] the starting address of the splitted chunk
splittedBlockCount [in] the block size of the spliter
Returns:
none

Definition at line 167 of file RTEMem_SystemPageCache.hpp.

References m_BlockAddress, m_FirstSplinter, m_FreeBlockCount, and m_NextSplinter.

Referenced by RTEMem_SystemPageCache::ReinsertRemainingSplinter().

    {
        if ( !blockWhichHasBeenSplitted->m_FirstSplinter )
        {
            blockWhichHasBeenSplitted->m_FirstSplinter = blockWhichHasBeenSplitted;
        }
        m_FirstSplinter    = blockWhichHasBeenSplitted->m_FirstSplinter;
        m_NextSplinter     = blockWhichHasBeenSplitted->m_NextSplinter;
        blockWhichHasBeenSplitted->m_NextSplinter = this;
        m_BlockAddress     = splittedChunkAddress;
        m_FreeBlockCount   = splittedBlockCount;
    }


Generated by  Doxygen 1.6.0   Back to index