// public unsafe static void InitialKernelProtect() // { // KernelMessage.WriteLine("Protecting Memory..."); // // PageDirectoryEntry* pde = (PageDirectoryEntry*)AddrPageDirectory; // // for (int index = 0; index < 1024; index++) // // { // // pde[index].Writable = false; // // } // // PageTable.PageTableEntry* pte = (PageTable.PageTableEntry*)PageTable.AddrPageTable; // // for (int index = 0; index < 1024 * 32; index++) // // pte[index].Writable = false; // // InitialKernelProtect_MakeWritable_ByRegion(0, 90 * 1024 * 1024); // KernelMessage.WriteLine("Reload CR3 to {0:X8}", PageTable.AddrPageDirectory); // Native.SetCR3(PageTable.AddrPageDirectory); // //Native.Invlpg(); // KernelMessage.WriteLine("Protecting Memory done"); // } // public unsafe static void InitialKernelProtect_MakeWritable_ByRegion(uint startVirtAddr, uint endVirtAddr) // { // InitialKernelProtect_MakeWritable_BySize(startVirtAddr, endVirtAddr - startVirtAddr); // } // public unsafe static void InitialKernelProtect_MakeWritable_BySize(uint virtAddr, uint size) // { // var pages = KMath.DivCeil(size, 4096); // for (var i = 0; i < pages; i++) // { // var entry = PageTable.GetTableEntry(virtAddr); // entry->Writable = true; // } // } public static void Tests() { var ar = new KList <uint>(sizeof(uint)); ar.Add(44); ar.Add(55); KernelMessage.WriteLine("CNT: {0}", ManagedMemoy.AllocationCount); foreach (var num in ar) { KernelMessage.WriteLine("VAL: {0}", num); } KernelMessage.WriteLine("CNT: {0}", ManagedMemoy.AllocationCount); ar.Destroy(); KernelMessage.WriteLine("Pages free: {0}", PageFrameManager.PagesAvailable); for (var i = 0; i < 10000; i++) { var s = new int[] { 1, 2, 3, 4, }; s[1] = 5; Memory.FreeObject(s); } KernelMessage.WriteLine("Pages free: {0}", PageFrameManager.PagesAvailable); //Memory.FreeObject(s); }
public bool MoveNext() { KList <T> localList = list; if (((uint)index < (uint)localList._size)) { current = localList._items[index]; index++; return(true); } return(MoveNextRare()); }
internal Enumerator(KList <T> list) { this.list = list; index = 0; current = default(T); }