Dispatching & Queue Rewrite II:
authorAlex Ionescu <aionescu@gmail.com>
Mon, 14 Mar 2005 05:54:32 +0000 (05:54 +0000)
committerAlex Ionescu <aionescu@gmail.com>
Mon, 14 Mar 2005 05:54:32 +0000 (05:54 +0000)
commit6a7ba78c917a2a0e37acd90e8bdf6f7e65c47ebe
tree4549c7063e2704c5118429a7504e40aaf4f9233c
parente33a78f93b0d851a53459bceff181e07149778ac
Dispatching & Queue Rewrite II:

    - Rewrote wait code. It is now cleaner, more optimized and faster. All waiting
      functions are now clearly differentiated instead of sharing code. These functions
      are called up to a dozen times a second, so having dedicated code for each of
      them is a real boost in speed.
    - Fixed several queue issues, made a dedicated queue wait/wake function (you are not
      supposed to use KeWaitFor on a queue, and this is also a speed boost), and make it
      compatible with new wait code.
    - Optimized Work Queue code to be much smaller and better organized, by using an
      array instead of hard-coded multiple static variables. Also, add support for the
      real NT structures and implementation, paving the road for Dynamic Work Items, which
      also have timeouts, and deadlock dection + debug info.
    - Simplified PsBlockThread and made it compatible with wait code.
    - Added support for priority boosting when unwaiting a thread; will use later, as well
      as put proper boosting for dispatch objects.
    - Inlined all dispatcher lock functions and header initialization for speed.
    - Moved executive wait code into ob.

svn path=/trunk/; revision=14047
19 files changed:
reactos/config
reactos/include/ddk/extypes.h
reactos/ntoskrnl/Makefile
reactos/ntoskrnl/ex/init.c
reactos/ntoskrnl/ex/work.c
reactos/ntoskrnl/include/internal/ex.h
reactos/ntoskrnl/include/internal/ke.h
reactos/ntoskrnl/include/internal/ps.h
reactos/ntoskrnl/ke/event.c
reactos/ntoskrnl/ke/i386/tskswitch.S
reactos/ntoskrnl/ke/kthread.c
reactos/ntoskrnl/ke/mutex.c
reactos/ntoskrnl/ke/queue.c
reactos/ntoskrnl/ke/sem.c
reactos/ntoskrnl/ke/timer.c
reactos/ntoskrnl/ke/wait.c
reactos/ntoskrnl/ntoskrnl.def
reactos/ntoskrnl/ps/kill.c
reactos/ntoskrnl/ps/thread.c