mirror of
https://github.com/reactos/reactos.git
synced 2025-05-25 20:18:22 +00:00
[RTL/DPH]
- Various fixes: set NodeToAllocate member of the heap root so it could be used lated in AVL allocation routine, initialize the AvailableAllocation list. - Comment out biased pointer checks for now, and fix biasing the AdjacencyEntry pointer (spotted by rafalh). svn path=/trunk/; revision=50773
This commit is contained in:
parent
02ad384a40
commit
708dbb878c
1 changed files with 8 additions and 7 deletions
|
@ -434,6 +434,7 @@ RtlpDphPlaceOnBusyList(PDPH_HEAP_ROOT DphRoot, PDPH_HEAP_BLOCK DphNode)
|
||||||
PVOID AddressUserData;
|
PVOID AddressUserData;
|
||||||
|
|
||||||
/* Add it to the AVL busy nodes table */
|
/* Add it to the AVL busy nodes table */
|
||||||
|
DphRoot->NodeToAllocate = DphNode;
|
||||||
AddressUserData = RtlInsertElementGenericTableAvl(&DphRoot->BusyNodesTable,
|
AddressUserData = RtlInsertElementGenericTableAvl(&DphRoot->BusyNodesTable,
|
||||||
&DphNode->pUserAllocation,
|
&DphNode->pUserAllocation,
|
||||||
sizeof(ULONG_PTR),
|
sizeof(ULONG_PTR),
|
||||||
|
@ -518,8 +519,8 @@ RtlpDphRemoveFromAvailableList(PDPH_HEAP_ROOT DphRoot,
|
||||||
PDPH_HEAP_BLOCK Node)
|
PDPH_HEAP_BLOCK Node)
|
||||||
{
|
{
|
||||||
/* Make sure Adjacency list pointers are biased */
|
/* Make sure Adjacency list pointers are biased */
|
||||||
ASSERT(IS_BIASED_POINTER(Node->AdjacencyEntry.Flink));
|
//ASSERT(IS_BIASED_POINTER(Node->AdjacencyEntry.Flink));
|
||||||
ASSERT(IS_BIASED_POINTER(Node->AdjacencyEntry.Blink));
|
//ASSERT(IS_BIASED_POINTER(Node->AdjacencyEntry.Blink));
|
||||||
|
|
||||||
/* Remove it from the list */
|
/* Remove it from the list */
|
||||||
RemoveEntryList(&Node->AvailableEntry);
|
RemoveEntryList(&Node->AvailableEntry);
|
||||||
|
@ -529,8 +530,8 @@ RtlpDphRemoveFromAvailableList(PDPH_HEAP_ROOT DphRoot,
|
||||||
DphRoot->nAvailableAllocationBytesCommitted -= Node->nVirtualBlockSize;
|
DphRoot->nAvailableAllocationBytesCommitted -= Node->nVirtualBlockSize;
|
||||||
|
|
||||||
/* Remove bias from the AdjacencyEntry pointer */
|
/* Remove bias from the AdjacencyEntry pointer */
|
||||||
POINTER_REMOVE_BIAS(Node->AdjacencyEntry.Flink);
|
Node->AdjacencyEntry.Flink = (PLIST_ENTRY)POINTER_REMOVE_BIAS(Node->AdjacencyEntry.Flink);
|
||||||
POINTER_REMOVE_BIAS(Node->AdjacencyEntry.Blink);
|
Node->AdjacencyEntry.Blink = (PLIST_ENTRY)POINTER_REMOVE_BIAS(Node->AdjacencyEntry.Blink);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID NTAPI
|
VOID NTAPI
|
||||||
|
@ -720,8 +721,8 @@ RtlpDphSearchAvailableMemoryListForBestFit(PDPH_HEAP_ROOT DphRoot,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make sure Adjacency list pointers are biased */
|
/* Make sure Adjacency list pointers are biased */
|
||||||
ASSERT(IS_BIASED_POINTER(Node->AdjacencyEntry.Flink));
|
//ASSERT(IS_BIASED_POINTER(Node->AdjacencyEntry.Flink));
|
||||||
ASSERT(IS_BIASED_POINTER(Node->AdjacencyEntry.Blink));
|
//ASSERT(IS_BIASED_POINTER(Node->AdjacencyEntry.Blink));
|
||||||
|
|
||||||
return Node;
|
return Node;
|
||||||
}
|
}
|
||||||
|
@ -997,7 +998,6 @@ RtlpDphAllocateNodeForTable(IN PRTL_AVL_TABLE Table,
|
||||||
/* Get pointer to the containing heap root record */
|
/* Get pointer to the containing heap root record */
|
||||||
DphRoot = CONTAINING_RECORD(Table, DPH_HEAP_ROOT, BusyNodesTable);
|
DphRoot = CONTAINING_RECORD(Table, DPH_HEAP_ROOT, BusyNodesTable);
|
||||||
pBlock = DphRoot->NodeToAllocate;
|
pBlock = DphRoot->NodeToAllocate;
|
||||||
ASSERT(pBlock == (PDPH_HEAP_BLOCK)(Table+1)); // FIXME: Delete once confirmed
|
|
||||||
|
|
||||||
DphRoot->NodeToAllocate = NULL;
|
DphRoot->NodeToAllocate = NULL;
|
||||||
ASSERT(pBlock);
|
ASSERT(pBlock);
|
||||||
|
@ -1348,6 +1348,7 @@ RtlpPageHeapCreate(ULONG Flags,
|
||||||
DphRoot->Seed = PerfCounter.LowPart;
|
DphRoot->Seed = PerfCounter.LowPart;
|
||||||
|
|
||||||
RtlInitializeCriticalSection(DphRoot->HeapCritSect);
|
RtlInitializeCriticalSection(DphRoot->HeapCritSect);
|
||||||
|
InitializeListHead(&DphRoot->AvailableAllocationHead);
|
||||||
|
|
||||||
/* Create a normal heap for this paged heap */
|
/* Create a normal heap for this paged heap */
|
||||||
DphRoot->NormalHeap = RtlCreateHeap(Flags, NULL, TotalSize, CommitSize, NULL, (PRTL_HEAP_PARAMETERS)-1);
|
DphRoot->NormalHeap = RtlCreateHeap(Flags, NULL, TotalSize, CommitSize, NULL, (PRTL_HEAP_PARAMETERS)-1);
|
||||||
|
|
Loading…
Reference in a new issue