ion(a)svn.reactos.org wrote:
- Fix shamefully dangerously broken Work
Thread/Queue/Item implementation:
* 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.
Updated files:
trunk/reactos/include/ndk/exfuncs.h
trunk/reactos/include/ndk/extypes.h
trunk/reactos/include/ndk/ifssupp.h
trunk/reactos/include/ndk/iofuncs.h
trunk/reactos/include/ndk/obfuncs.h
trunk/reactos/include/ndk/pstypes.h
trunk/reactos/include/ndk/rtlfuncs.h
trunk/reactos/include/ndk/rtltypes.h
trunk/reactos/lib/rtl/dos8dot3.c
trunk/reactos/ntoskrnl/ex/work.c
trunk/reactos/ntoskrnl/ntoskrnl.mc
trunk/reactos/w32api/include/ddk/ntifs.h
_______________________________________________
Ros-svn mailing list
Ros-svn(a)reactos.org
http://www.reactos.org/mailman/listinfo/ros-svn
After applying this commit, I get a crash during compiling ros on ros
with 'make clean' on a clean tree on my smp machine:
Assertion (Thread->State == Waiting) == (Thread->WaitBlockList != NULL)
failed at ./ntoskrnl/ke/wait.c:722
I don't get a back trace. It may be a problem of the broken ASSERT
statement (DBG=1 and KDBG=0).
- Hartmut