- mmc.exe is probably a long way off, thus mmc snap-ins will be too. This will suffice until then. Most of the code should be transferable.
svn path=/trunk/; revision=20586
- Also, the spinlock is not actually acquired on non-SMP builds; instead, interrupts are blocked and unblocked for acquire/release, this optimizes locking.
- Added many asserts and bugcheck scenarios.
- Added thread priority boosting.
- Added some debugging helpers and deadlock detection.
- Added RESOURCE_NOT_OWNED bugcehck message.
* Thanks again to Waxdragon (Andrew) for testing this build.
svn path=/trunk/; revision=20580
- Optimize UP spinlock functions so they don't call ntoskrnl anymore and only raise/lower irql.
- Implemented Queued Spinlocks and In-Stack Queued Spinlocks for UP machines.
* Implemented KeAcquireInStackQueuedSpinLock, KeReleaseInStackQueuedSpinLock, KeAcquireQueuedSpinLock, KeReleaseQueuedSpinLock, KeTryToAcquireQueuedSpinLock, KeTryToAcquireQueuedSpinLockRaiseToSynch, KeAcquireQueuedSpinLockRaisetoSynch.
svn path=/trunk/; revision=20575
- Made inlined functions in ke/wait.c macros, because they weren't being inlined.
- Created separate cases for satisfying mutant, non-mutant and generic objects, to optimize wait satisfaction.
- Fixed some places which werne't setting the dispatcher header's size member correctly.
- Fixed formatting in ke/wait.c
- Fixed a case in KiCheckAlertability: we also need to check if the thread is alerted in Kernel-Mode, even if the wait mode given was user and user-mode is not alerted.
- Fixed signaling checks across the wait code and removed KiCheckIfObjectSignaled. We must not consider the mutant as signaled if SignalState is = 1.
- Fix code to check if the wait blocks' status is STATUS_TIMEOUT, because we do not need to check for signal state in that case.
- Removed the exports for internal dispatcher lock routines.
** Thanks to Waxdragon for stress-testing this for an hour :)
svn path=/trunk/; revision=20568
* Do not pollute the kernel with 10 real-time threads and 5 high-priority threads in order to manage work items. Work threads are very-low priority (< 7) and should never pre-empt userthreads like they do now. 1 priority 7, 5 priority 5 and 3 priority 4 threads are now properly created.
* Implement a worker thread balance set manager. On SMP systems, it is able to determine when a new thread should be allocate to execute on a free CPU. On both UP and MP, it is also able to detect if a work queue has deadlocked, and will allocate new dynamic threads to unfreeze the queue.
* Add check for threads returning with APC disabled, and re-enable APCs if this happend. This hack is used in NT for broken drivers.
* Lots of code changes to support dynamic threads, which:
- Can terminate.
- Use a 10 minute timeout on the kernel queue.
* Add skeleton code for swapping worker thread stacks as well as worker thread shutdown (not yet implemented).
* Add WORKER_INVALID bugcheck definition.
* These changes seem to make ROS a lot more responsive.
- NDK:
* Make more compatible with MS IFS
* Fix EX_WORK_QUEUE definition.
* Fix ETHREAD offsets.
* Fix RtlIsNameLegalDOS8Dot3 definition.
* Move splay tree defines to IFS.
svn path=/trunk/; revision=20554