Commit graph

19173 commits

Author SHA1 Message Date
Alex Ionescu 300da88aff - New ERESOURCE implementation: fixes the return value of some functions (VOID vs NTSTATUS, USHORT vs ULONG), as well as optimized the code loops and general structure of the code. Additionnaly, functions do not simply call other functions with similar names; the exact implementation of each function has now been properly separated (see the DDK for more information on this) to have the most optimized scenarios.
- 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
2006-01-05 16:24:32 +00:00
Alex Ionescu 444bb36f82 - Change dispatcher lock release to be more like documented in Windows Internals II and to allow an easier move to Queued Spinlock.
svn path=/trunk/; revision=20579
2006-01-05 15:32:08 +00:00
Casper Hornstrup f881f51fdf Identify TechBot to allow private messages
svn path=/trunk/; revision=20578
2006-01-05 15:29:08 +00:00
Alex Ionescu 6f136848b2 - Fix build.
svn path=/trunk/; revision=20577
2006-01-05 15:17:54 +00:00
Alex Ionescu 8ca886843a - Disable commented out define-check which i had only commented to check building.
svn path=/trunk/; revision=20576
2006-01-05 13:59:11 +00:00
Alex Ionescu 93d0b2ac85 - Separate UP and MP spinlock functions.
- 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
2006-01-05 13:51:06 +00:00
Hervé Poussineau ca735d261c Add some exports to ntdll
svn path=/trunk/; revision=20574
2006-01-05 13:40:05 +00:00
Alex Ionescu 5bba25c90e - Implemented Queued and In-Stack Queued Spinlocks (at DPC-Level). See "Windows Internals II" Chapter 4, Pages 25-27.
svn path=/trunk/; revision=20573
2006-01-05 13:12:48 +00:00
Hartmut Birr 4c4d352a5e KefReleaseSpinLockFromDpcLevel needs the address of a spinlock and not its value.
svn path=/trunk/; revision=20572
2006-01-05 12:48:33 +00:00
Hervé Poussineau b71ffe4703 Add prototypes for Nt/ZwReplyWaitReceivePortEx, Nt/ZwImpersonateAnonymousToken
svn path=/trunk/; revision=20571
2006-01-05 12:27:03 +00:00
Gé van Geldorp a41bad3ee5 - Disable NtQuerySecurityObject for now
- Add some registry entries for TinyWeb (patch by Dr.Fred)
Fixes 1214

svn path=/trunk/; revision=20570
2006-01-05 09:22:09 +00:00
Alex Ionescu caa14fa66e Fix stack corruption. Thanks to Waxdragon and the fact he uses an -O2 build (hint hint nudge nudge)
svn path=/trunk/; revision=20569
2006-01-05 06:24:07 +00:00
Alex Ionescu 5e6fa26231 - Optimized the dispatcher lock. It is now gone on non-SMP systems and IRQL is raised or lowered instead.
- 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
2006-01-05 04:26:55 +00:00
Magnus Olsen f58996b3e9 fix new strechblt code for dib32, left todo dib1, dib4, dib24
svn path=/trunk/; revision=20567
2006-01-05 01:49:00 +00:00
Alex Ionescu 1ca93c8a41 - fix build on dbg=0. Thanks to Andrew
svn path=/trunk/; revision=20566
2006-01-05 00:56:44 +00:00
Gé van Geldorp afb3a84621 Avoid using uninitialized variables
svn path=/trunk/; revision=20565
2006-01-04 23:48:15 +00:00
Gé van Geldorp d31486016d Only use the Folder class handler if we're actually executing a folder.
Fixes bug 1235.

svn path=/trunk/; revision=20564
2006-01-04 23:28:10 +00:00
Gé van Geldorp 6a771b2fde Fix (so far harmless) typo
svn path=/trunk/; revision=20563
2006-01-04 22:46:45 +00:00
Gé van Geldorp 30db12dcc8 Let oskit tell us when sending should be blocked 'cause its stuffed upto its
nose with data waiting to be sent. Bug 1232.

svn path=/trunk/; revision=20562
2006-01-04 22:40:48 +00:00
Alex Ionescu d97db4ba3a - Fix worker thread priorities. A quick check of the DDK and ProcesXP confirmed that there was a bug (thanks GvG!). Turns out I had forgotten to use the -base- priority kernel call. Renamed some variables to make it clearer and fixed the bug. The correct priorities are 12, 13, 15.
svn path=/trunk/; revision=20561
2006-01-04 20:45:58 +00:00
Thomas Bluemel 450dfac672 fixed gcc4 warnings
svn path=/trunk/; revision=20560
2006-01-04 14:26:06 +00:00
James Tabor 1b8dc2e713 Clean up and fixed NtUserGetMenuItemRect. Needs more testing. I watch mplayerc swip all the menu items with crashing.
svn path=/trunk/; revision=20559
2006-01-04 06:44:52 +00:00
Ged Murphy 4ac1eae8cf - Display a temporary note in ipconfig to avoid user confusion.
- Requires fixing of GetAdaptersInfo 

svn path=/trunk/; revision=20558
2006-01-03 23:41:57 +00:00
Alex Ionescu 807dd25391 - Implement Pushlocks. Only Waking, and Exclusive Acquire/Release + Waits have been tested. The shared paths and block/unblock are still untested and may probably contain bugs. Pushlocks are not yet used in the kernel and they won't be until all paths are tested and validated.
- Public DDIs Implemented: ExfAcquirePushLockExclusive, ExfAcquirePushLockShared, ExfTryToWakePushLock, ExfReleasePushLock, ExfReleasePushLockExclusive, ExfReleasePushLockShared, ExfUnblockPushLock.

svn path=/trunk/; revision=20557
2006-01-03 23:36:05 +00:00
Alex Ionescu 53ee440af8 - More proper fix for the QEMU/Abiword regression. Remove kernel32 hack. Thanks to Filip and The Munger.
svn path=/trunk/; revision=20556
2006-01-03 22:36:36 +00:00
Alex Ionescu ce5adef908 - Dirty temporary fix to unregress abiword/qemu.
svn path=/trunk/; revision=20555
2006-01-03 22:25:09 +00:00
Alex Ionescu 07b0b865dc - 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.

svn path=/trunk/; revision=20554
2006-01-03 21:34:19 +00:00
Aleksey Bragin 1aea3ab1ab Add kbdur.dll (Ukrainian keyboard layout) to the install-cd.
svn path=/trunk/; revision=20553
2006-01-03 21:29:39 +00:00
Ged Murphy e94e037e29 fix ugly tab formatting
svn path=/trunk/; revision=20552
2006-01-03 21:17:28 +00:00
Ged Murphy e5bdbe851f Skeleton dialog box to control system page file size
svn path=/trunk/; revision=20551
2006-01-03 21:00:06 +00:00
Magnus Olsen 7ceb46269d Commit a patch for hide and show mouse. (forget it)
svn path=/trunk/; revision=20550
2006-01-03 18:49:10 +00:00
Magnus Olsen 8b60a45ea6 forget remove some test code.
svn path=/trunk/; revision=20549
2006-01-03 17:59:56 +00:00
Magnus Olsen 3c8dbc6c23 forget remove a calc value in the for loop it can do outside the loop.
svn path=/trunk/; revision=20548
2006-01-03 17:21:11 +00:00
Magnus Olsen 0595ffc278 Remove putpixel from strechblt and add code to write direcly to the memory. it incress the speed for strechblt.
this is ony for 16bit graphice mode. 
 

svn path=/trunk/; revision=20547
2006-01-03 17:05:39 +00:00
Magnus Olsen 05d9ad7068 addding new streach code for dib8, left to add it is dib1, dib4, dib24, dib32
svn path=/trunk/; revision=20546
2006-01-03 16:22:09 +00:00
Hartmut Birr 02b247cca6 Copy the correct value if the value is stored directly in the data pointer (in CmiExportValue).
svn path=/trunk/; revision=20545
2006-01-03 14:56:47 +00:00
Hartmut Birr f0fe4ec071 Fixed the the conversion of the vendor identifier string. Sometimes, the wrong conversion has resulted in a invalid opcode exception.
svn path=/trunk/; revision=20544
2006-01-03 13:44:35 +00:00
Maarten Bosma 89db3ed74e fix typos.
svn path=/trunk/; revision=20543
2006-01-03 11:49:59 +00:00
Maarten Bosma a5a347cb7b fix spelling mistake.
svn path=/trunk/; revision=20542
2006-01-03 00:24:37 +00:00
Maarten Bosma 5e6a4d2387 Change URL to svn.reactos.org
svn path=/trunk/; revision=20541
2006-01-03 00:17:31 +00:00
Maarten Bosma 6344467474 Add some Apps and change tree version to the bare one.
svn path=/trunk/; revision=20540
2006-01-03 00:12:35 +00:00
Maarten Bosma 2ac089bd54 Change include base too.
svn path=/trunk/; revision=20539
2006-01-03 00:10:01 +00:00
Magnus Olsen b9c3f275b7 Thx GvG for helping put to gather a new math formula that make alot of calc not needed any longer. and correct fourmla for rounding fault. I did not think of it when I rewrote the streachblt. it feal strechblt is bit fasfer agains the old one.
svn path=/trunk/; revision=20538
2006-01-02 23:43:43 +00:00
Gé van Geldorp 485b43da1d Silence some debug messages
svn path=/trunk/; revision=20537
2006-01-02 20:51:54 +00:00
Gé van Geldorp f7fe0d0258 Use lookaside lists for two most common allocation sizes (mbuf and data buffer)
svn path=/trunk/; revision=20536
2006-01-02 20:26:03 +00:00
Gé van Geldorp d19debd757 Use a lookaside list for tracking
svn path=/trunk/; revision=20535
2006-01-02 20:04:19 +00:00
Magnus Olsen c04e99c3d3 Correct Streachblt in windows mode, it take accunt org and offset now. this need to be implement in dib1, dib4, dib8,dib24, dib32
svn path=/trunk/; revision=20534
2006-01-02 19:00:47 +00:00
Hartmut Birr 39a85a187f Implemented the 'red zone check' for the non paged pool.
svn path=/trunk/; revision=20533
2006-01-02 18:45:52 +00:00
Hartmut Birr 61b5988d34 Simplified the definition of the interrupt handlers for non smp machines.
svn path=/trunk/; revision=20532
2006-01-02 18:34:31 +00:00
Alex Ionescu 6f306a8b90 - Fix building with old binutils. Thanks to Ge for the fix.
svn path=/trunk/; revision=20531
2006-01-02 18:03:19 +00:00