[ros-svn] [ion] 17179: - Completely reimplement
NtWaitForMultipleObjects:
ion at svn.reactos.com
ion at svn.reactos.com
Sun Aug 7 23:30:02 CEST 2005
- Completely reimplement NtWaitForMultipleObjects:
- Check for invalid Objectcount and wait type
- Don't use 2.6KB of stack space (kernel threads only get 4...)
- Don't call ObReferenceObjectByHandle since it does a lot of superflous checks, continous locking/unlocking and makes us extremly slow for a large wait and also doesn't give us the full flexibility we need.
- Detect if a Waitall is being done with the same object duplicated.
- Protect wait with SEH.
- General fixes for all NtWaitXXX:
- Use DefaultObject from Object Header and remove all previous associated hacks, including the IO_TYPE hack. The DefaultObject will either be NULL, an offset to an internal Object Event, or a pointer to a default event. We handle all three.
- Guard the KeWaitXXX call with SEH since it can raise exceptions.
- Fix all object type intiailizers regarding DefaultObject.
Updated files:
trunk/reactos/ntoskrnl/ex/callback.c
trunk/reactos/ntoskrnl/ex/event.c
trunk/reactos/ntoskrnl/ex/mutant.c
trunk/reactos/ntoskrnl/ex/profile.c
trunk/reactos/ntoskrnl/ex/win32k.c
trunk/reactos/ntoskrnl/include/internal/ex.h
trunk/reactos/ntoskrnl/include/ntoskrnl.h
trunk/reactos/ntoskrnl/io/iomgr.c
trunk/reactos/ntoskrnl/ke/wait.c
trunk/reactos/ntoskrnl/ob/handle.c
trunk/reactos/ntoskrnl/ob/wait.c
trunk/reactos/ntoskrnl/ps/psmgr.c
More information about the Ros-svn
mailing list