public void Unload() { if (NoUnload) { return; } UInt32Dictionary.Iterator iterator = CodePages.GetIterator(); while (iterator.HasNext()) { UInt32Dictionary.KeyValuePair pair = iterator.Next(); uint vAddr = pair.Key; #if MEMLAYOUT_TRACE BasicConsole.WriteLine("Unloading code page..."); #endif VirtMemManager.Unmap(vAddr, UpdateUsedPagesFlags.Virtual); } iterator.RestoreState(); iterator = DataPages.GetIterator(); while (iterator.HasNext()) { UInt32Dictionary.KeyValuePair pair = iterator.Next(); uint vAddr = pair.Key; #if MEMLAYOUT_TRACE BasicConsole.WriteLine("Unloading data page..."); #endif VirtMemManager.Unmap(vAddr, UpdateUsedPagesFlags.Virtual); } iterator.RestoreState(); }
public void Unload() { //x86.Unmap_Print = unloadPrint; for (int i = 0; i < CodePages.Keys.Count && i < CodePages.Values.Count; i++) { #if MEMLAYOUT_TRACE BasicConsole.WriteLine("Unloading code page..."); #endif //if (unloadPrint) //{ // BasicConsole.WriteLine("Unloading code page"); //} //TODO: Revert to the following line of code and then work out why it results in so many page faults // VirtMemManager.Unmap(CodePages.Keys[i], UpdateUsedPagesFlags.Virtual); // Also see the similar line further down VirtMemManager.Unmap(CodePages.Keys[i], UpdateUsedPagesFlags.None); } for (int i = 0; i < DataPages.Keys.Count && i < DataPages.Values.Count; i++) { #if MEMLAYOUT_TRACE BasicConsole.WriteLine("Unloading data page..."); #endif //if (unloadPrint) //{ // FOS_System.String str = "Unloading data page 0x--------"; // ExceptionMethods.FillString(DataPages.Keys[i], 29, str); // BasicConsole.WriteLine(str); //} //TODO: Revert line - see above VirtMemManager.Unmap(DataPages.Keys[i], UpdateUsedPagesFlags.None); //if (unloadPrint) //{ // BasicConsole.WriteLine(" > Done."); //} } //if (unloadPrint) //{ // BasicConsole.WriteLine("Unload complete."); //} //x86.Unmap_Print = false; }