Make definitions of ExpChangeRundown, ExpChangePushlock and ExpSetRundown 64 bit safe (have one portable definition and use it accordingly)
svn path=/trunk/; revision=50152
- The rundown event is a sync event, not a notification event.
- Only take slow path when waiting for release if the value changed *and* is still not active, not if only one of the two is true.
svn path=/trunk/; revision=25472
- Rundown re-implementation:
* Added inlined functions for internal system use for quickest path.
* Correctly named all functions Exf instead of Ex.
* Removed PAGED_CODE(); macro where it shouldn't be used.
* Addded multiple ASSERTS for sanity checks.
* Used macros for win64/32 portability.
* Fixed the following bugs/features:
* ExfAcquireRundownProtection:
** Added specific code instead of calling the generic function. Rundown locks are
performance critical and a dedicated path is prefered.
* ExfAcquireRundownProtectionEx:
** Added a quick immediate check to see if the rundown is active.
* ExfReleaseRundownProtection:
** Added specific code instead of calling the generic function. Rundown locks are
performance critical and a dedicated path is prefered.
* ExfReleaseRundownProtectionEx:
** Simplified the loop code.
** Fixed a bug in signaling of the event during waitblock count removal
* ExfWaitForRundownProtectionRelease:
** Add quick case when we don't actually need a full wait.
** Simplified loop code.
* Added stubs for cache-aware implementation.
* Documented the functions.
svn path=/trunk/; revision=20435
- Fix KTSS definition.
- Fix KTRAP_FRAME definition.
- Fix RTL_PROCESS_BACKTRACE_INFORMATION and RTL_PROCESS_BACKTRACES definitions.
- Fix/rename RUNDOWN_DESCRIPTOR definition.
- Rename PPF_ definitions to RTL_USER_PROCESS_PARAMETERS_
- Setup a global _REACTOS_ define when code is compiled.
- #ifdef out the multiboot flags from the NDK so they'll only be available for ReactOS. Dirty 'hack' until we stop using them.
- Update NDK Fixme list, since all major bugs are fixed now.
svn path=/trunk/; revision=19693
Dispatcher Objects Rewrite (minus Queues, coming in next patch).
Global Changes:
- Use KOBJECT enumerations for all objects, remove obsoleted ros-internal enumeration.
- Reformatting, commenting, and addition of Debug Prints for easier debugging
- Properly create Executive Objects. They don't need a creation routine.
- Make sure to properly lock and release the Dispatcher Database.
Mutex/Mutant:
- Correct MUTANT_BASIC_INFORMATION
- Return previous state in Kernel Functions, intead of 1 or 0 all the time.
- Initialize listhead properly
- Removed code duplication between mutant and mutex release.
- Fix bugs in release
- Add proper exeption if the mutex is not owned.
Kernel Queues:
- Optimize the code
- Use Inserted Flag
Timers:
- Some changes in setting the default data to allow KiInsertTimer to be called internally
by the wait code in the next patch.
Events:
- Optimize and simplify KeInitializeEvent
- Implement KeInitializeEventPair
- Fix KePulseEvent. It was completely messed up and also used unneeded Interlocked function.
- Fix KeResetEvent. It was not locking the dispatcher lock but using Interlocked.
- Fix KeSetEvent. It was not differentiating between Notification and Sycronization events
and also signaling the Event even if nobody was waiting on it.
Semaphores:
- Fix KeReleaseSemaphore. It was not checking if nobody was waiting on it before unwaiting the thread.
- Fix not releasing dispatcher database before raising an exception.
- Add check to NtCreateSemaphore to make sure the counts make sense.
Event Pairs:
- Remove Thread Event Pair. They are only used for NT4 QuickLPC which is obsoleted.
- Use KeInitializeEventPair
svn path=/trunk/; revision=14045