modified base/applications/taskmgr/debug.c
modified base/applications/taskmgr/endproc.c
modified base/applications/taskmgr/priority.c
Arch Blackmann has never heard of exotic features of the C language such as "subroutines"
modified base/applications/taskmgr/dbgchnl.c
modified base/applications/taskmgr/procpage.c
modified base/applications/taskmgr/procpage.h
Did you know that Task Manager killed the wrong process when using the context menu? Fixed by using a sophisticated "subroutine" that reads the process entry index from the currently selected list item's client data, replacing the copy-pasted code that used the index of the list entry as the process entry index (which only worked before due to no sorting)
Save the sort column and order
modified base/applications/taskmgr/taskmgr.c
Sort by image name by default
svn path=/trunk/; revision=41664
- Implemented StreamClassRegisterAdapter, StreamClassReenumerateStreams, StreamClassDebugAssert, StreamClassDebugPrint, StreamClassGetDmaBuffer
- Drivers using stream class driver should now be able to initialize
svn path=/trunk/; revision=41662
- Copy kmap.c here, since it's the very definition of "misc support function"
- Copy some exported functions in mm.c which were listed as "misc functions"
- Warn that current implementation of MmIsNonPagedSystemAddressValid will kill kittens.
- Rename mm.c to mmfault.c, since other than the misc functions now in mmsup.c, it was all routines to handle page/access faults.
- Warn that MmIsAddressValid, as currently implemented, kills puppies.
- Move WriteWatch functions to virtual.c since they're part of the Virtual API system call set already hosted there.
- Move the global variables that people had been throwing in here to mminit.c, which is slightly more appropriate.
- Move wset.c's MmTrimUserMemory to balance.c, since that's where all other similar functions are located.
- Incidentally, kill wset.c, as this was the only function present.
- No functional changes, just refactoring and cleanup (other than warning the critter murder the two broken functions will achieve if called).
svn path=/trunk/; revision=41659
- "Managing driver managing" (by David Welch) is no more... the routines have been properly renamed and cleaned up.
- Also moved Driver Verifier helper routines in here, and fixed a couple of bugs:
- Do not allow hooking of the kernel or HAL image (tested on Windows Server 2003)
- Cleanup some useless variable redefinitions and code complexity.
- Documented what some of the Mm Lock/Unlock Pageable Section/Driver functions should do, for later if needed.
- Made aliasses so the typo "Pagable" functions redirect to the correct "Pageable" functions.
- No functional change -- the Verifier functions were unused, and the drvlock.c functions were unimplemented (and still are).
- Also move one more *Pageable* function from wset.c to ARM3's drvmgmt.c -- it seemed to have been a lost orphan (Also unimplemented).
svn path=/trunk/; revision=41658
- Use a smarter algorithm (as described here: http://www.microsoft.com/whdc/Driver/tips/ContigMem.mspx) to first try to satisfy the allocation by a simple nonpaged pool allocation (for cached requests only).
- This range is then checked for physical continuity, since it's not guaranteed for non-initial-pool allocations (and right now in ReactOS, it never is).
- As a fallback, Windows NT then attempts to scan free nonpaged pool pages. This is not yet implemented since the ReactOS nonpaged pool is not usually contiguous (to the level that NT's is).
- When the ARM pool is implemented and replaces nonpaged pool, this code path will have to be implemented.
- As a last resort, the actual PFN database is scanned for contiguous free pages.
- ReactOS used MmGetContiguousPages for this, which blindly scanned the PFN database. New MiFindContinuousPages will scan the physical memory descriptor block recently implemented, which avoids going over pages we already know are going to be unusable.
- The ReactOS function also held the PFN lock for the entire duration of the scan, which is significant on systems with large memory. Instead, we make an initial unsafe scan first, and only lock when we think we've found a correct range (and we'll then reconfirm the ranges).
- Finally, the older function actually did a double-scan to try to avoid using memory ranges under 16MB, which was useless on today's systems and also rather inefficient.
- Other than that, the actual setup of the PFN entry is copy-pasted from the old ReactOS function, so nothing's changed there -- the page still looks the same, but the selection algorithm is faster and more accurate.
- Once the pages are found, we piggyback on the new I/O mapping mechanism (which uses System PTEs) instead of doing it all over by hand as before.
- Since the underlying support is still System PTEs, once again, optimizations to that component will yield significant improvements here too.
svn path=/trunk/; revision=41657
- Thanks to Matthieu Suiche (http://www.msuiche.net/2008/09/17/retrieving-mmphysicalmemoryblock-regardless-of-the-nt-version/).
- Move physical.c into ARM3 and call it dynamic.c since these functions are for Dynamic Memory (Hotplug) for Server 2003.
- Remove the old copyright header, as copy-pasting 5 DDK function definitions and rewriting them to say UNIMPLEMENTED isn't much of a copyright.
svn path=/trunk/; revision=41649
- This will call MmInitializeMemoryLimits (now implemented) which will go ahead and create the MmPhysicalMemoryBlock.
- This block contains the physical memory "runs" that are valid on the system, allowing the PFN database to differentiate between valid and non-valid RAM (instead of marking things as "BIOS").
- Also this will come in handy later for various utilities.
svn path=/trunk/; revision=41648
- Add missing ExtDeviceMode and PrivateExtractIconsA/W to PSDK and remove from Wine-only headers, as these are defined in the official PSDK.
svn path=/trunk/; revision=41644
- Don't remove the NCE if we fail because it may not be ours
- Mark the IRPs pending before we insert them into our queue
- Check that the addresses match so we don't receive somebody else's packets
- Part 1 of 2
svn path=/trunk/; revision=41638
- Use System PTEs.
- Allocate 12KB stacks with a 4KB guard page, and expand them up to 60KB as required.
- Previous implementation always allocated 60KB, without any guard page.
- The result is that on a minimal ReactOS install, simply booting up now requires an average of 0.5MB less of physical memory than before.
- And once again, optimizations to the system PTE allocation code should significantly improve performance.
- Should also analyze benefits of using a dead stack slist as done on Windows. (Assembla Ticket #39).
svn path=/trunk/; revision=41636
- The ARM3 PFN database is more of a "shadow" database not to interfere with the real ReactOS PFN database. It starts at 0xB0000000, which is where the initial nonpaged pool started (which now starts somewhere after the ARM3 PFN database).
- No new behavior has been introduced other than additional physical memory consumption for the PFN DB pages, and updated memory layout in the ARM3 world.
svn path=/trunk/; revision=41634
- Also set the Page Directory for the system/idle process in a slightly more correct way, instead of depending on the CR3 value. Do this in ARM^3 now, and remove the older code (and the MmGetPageDirectory function, which was only used by this).
svn path=/trunk/; revision=41631
- Kill all the requests before closing the socket
- Notify oskittcp when we are cancelling requests so it can properly close the socket
svn path=/trunk/; revision=41630
- Much faster and cleaner (will be even faster when System PTE allocation is optimized).
- Better handling of esoteric caching options, especially relevant for ARM.
- Handled through the MiPlatformCacheAttributes, which should be defined differently for each platform (TODO).
- Handles both I/O (device) and RAM physical memory.
- Correct flushing of CPU caches (not a big deal on x86, but matters on ARM).
svn path=/trunk/; revision=41628
- We do some minor optimizations to combine chunks if possible after a free, similar to MD Block algorithms in freeldr.c.
svn path=/trunk/; revision=41626