mirror of
https://github.com/danbulant/Cosmos
synced 2026-06-08 17:22:28 +00:00
improved HeapTest
This commit is contained in:
parent
b00c44c4aa
commit
1a857d9a3a
1 changed files with 33 additions and 56 deletions
|
|
@ -6,7 +6,7 @@ using Cosmos.Sys;
|
||||||
|
|
||||||
namespace EsxTest
|
namespace EsxTest
|
||||||
{
|
{
|
||||||
unsafe class Program
|
class Program
|
||||||
{
|
{
|
||||||
static bool Test = false;
|
static bool Test = false;
|
||||||
|
|
||||||
|
|
@ -70,28 +70,48 @@ namespace EsxTest
|
||||||
|
|
||||||
private static UInt32 Size=3000000;
|
private static UInt32 Size=3000000;
|
||||||
|
|
||||||
private static void HeapTest()
|
private unsafe static void HeapTest()
|
||||||
{
|
{
|
||||||
Console.WriteLine("HeapTest");
|
Console.WriteLine("HeapTest");
|
||||||
byte[] Memory = new byte[Size];
|
byte[] Memory = new byte[Size];
|
||||||
// memPtr =
|
|
||||||
// (byte*)Cosmos.Kernel.Heap.MemAlloc(HeaderSize);
|
|
||||||
|
|
||||||
fixed (byte* memPtr = &Memory[0])
|
fixed (byte* memPtr = &Memory[0])
|
||||||
{
|
{
|
||||||
|
byte counter = 0;
|
||||||
|
UInt32 testSize;
|
||||||
|
byte* testPointer;
|
||||||
Heap.Init((UInt32) memPtr, Size,65536);
|
Heap.Init((UInt32) memPtr, Size,65536);
|
||||||
//Heap.DebugActive = true;
|
//Heap.DebugActive = true;
|
||||||
UInt32 p0 = 0;
|
|
||||||
UInt32 p1 = 0;
|
|
||||||
UInt32 p2 = 0;
|
|
||||||
UInt32 p3 = 0;
|
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
Console.Clear();
|
++counter;
|
||||||
|
|
||||||
|
Console.CursorLeft = 0;
|
||||||
|
Console.CursorTop = 0;
|
||||||
HeapCounter.Print();
|
HeapCounter.Print();
|
||||||
for (int i = 0; i < 1000; i++)
|
|
||||||
|
testSize = MTRandom.Next(5000) + 1;
|
||||||
|
testPointer = (byte*)Heap.MemAlloc(testSize);
|
||||||
|
var incPointer = testPointer;
|
||||||
|
for (int i = 0; i < testSize; i++)
|
||||||
{
|
{
|
||||||
|
(*incPointer) = counter;
|
||||||
|
++incPointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < 500; i++)
|
||||||
|
{
|
||||||
|
incPointer = testPointer;
|
||||||
|
for (int j = 0; j < testSize; j++)
|
||||||
|
{
|
||||||
|
if ((*incPointer) != counter)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Heap failure!");
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
uint index = MTRandom.Next(1000);
|
uint index = MTRandom.Next(1000);
|
||||||
if (pointer[index]==0)
|
if (pointer[index]==0)
|
||||||
{
|
{
|
||||||
|
|
@ -102,53 +122,10 @@ namespace EsxTest
|
||||||
Heap.MemFree(pointer[index]);
|
Heap.MemFree(pointer[index]);
|
||||||
pointer[index] = 0;
|
pointer[index] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Heap.MemFree((UInt32) testPointer);
|
||||||
// //Heap.DebugActive = true;
|
|
||||||
// for (int i = 0; i < 4; i++)
|
|
||||||
// {
|
|
||||||
// UInt32 n = MTRandom.Next(20) + 1;
|
|
||||||
// switch (i)
|
|
||||||
// {
|
|
||||||
// case 0:
|
|
||||||
// p0 = Heap.MemAlloc(n);
|
|
||||||
// break;
|
|
||||||
// case 1:
|
|
||||||
// p1 = Heap.MemAlloc(n);
|
|
||||||
// break;
|
|
||||||
// case 2:
|
|
||||||
// p2 = Heap.MemAlloc(n);
|
|
||||||
// break;
|
|
||||||
// case 3:
|
|
||||||
// p3 = Heap.MemAlloc(n);
|
|
||||||
// break;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// for (int i = 0; i < 4; i++)
|
|
||||||
// {
|
|
||||||
// switch (i)
|
|
||||||
// {
|
|
||||||
// case 0:
|
|
||||||
// Heap.MemFree(p0);
|
|
||||||
// break;
|
|
||||||
// case 1:
|
|
||||||
// Heap.MemFree(p1);
|
|
||||||
// break;
|
|
||||||
// case 2:
|
|
||||||
// Heap.MemFree(p2);
|
|
||||||
// break;
|
|
||||||
// case 3:
|
|
||||||
// Heap.MemFree(p3);
|
|
||||||
// break;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Console.WriteLine("Press Enter for Reboot");
|
|
||||||
// Console.ReadLine();
|
|
||||||
// Deboot.Reboot();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void PciTest()
|
private static void PciTest()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue