Francois Gouget
e0e2ee3487
ntdll: Add a trailing '\n' to a FIXME() trace.
2015-08-07 23:50:20 +09:00
Sebastian Lackner
5bd9d58016
ntdll: Mark newly spawned worker threads as busy.
2015-07-29 22:23:56 +02:00
Sebastian Lackner
9562e81810
ntdll: Reimplement RtlQueueWorkItem on top of new threadpool API.
2015-07-28 09:54:18 +02:00
Sebastian Lackner
b687fee66f
ntdll: Fix incorrect assignment in assert statement (Coverity).
2015-07-13 14:44:40 +09:00
Sebastian Lackner
f65f645c3f
ntdll: Add missing calls to RtlExitUserThread.
2015-07-08 16:02:24 +09:00
Sebastian Lackner
0021569778
ntdll: Try to merge threadpool wait queue buckets if possible.
...
When the number of elements per bucket is too small, then try to reduce
the number of threads by merging buckets. This is to ensure that the
number of running wait queue threads doesn't get too big.
2015-07-06 14:49:39 +09:00
Sebastian Lackner
185247576b
ntdll: Implement TpSetWait and TpWaitForWait.
2015-07-06 14:49:39 +09:00
Sebastian Lackner
f1be5dcac0
ntdll: Implement threadpool wait queues.
...
To implement waiting for an arbitrary number of handles, we group them
in buckets up to (MAXIMUM_WAIT_OBJECTS - 1) objects, and then assign a
dedicated wait queue thread. The last handle is used to notify about
changes.
2015-07-06 14:49:38 +09:00
Sebastian Lackner
4523a54c62
ntdll: Implement TpAllocWait and TpReleaseWait.
2015-07-06 14:34:20 +09:00
Sebastian Lackner
cb2aae1af8
ntdll: Implement threadpool timer queues.
2015-07-03 13:06:41 +09:00
Sebastian Lackner
bd7cb07358
ntdll: Implement TpAllocTimer and TpReleaseTimer.
2015-07-03 13:06:31 +09:00
Sebastian Lackner
775d3dcecb
ntdll: Implement TpDisassociateCallback and add a separate group completion event.
2015-07-03 13:06:15 +09:00
Sebastian Lackner
8965511957
ntdll: Implement TpCallbackUnloadDllOnCompletion.
2015-07-02 14:54:13 +09:00
Sebastian Lackner
15110b1770
ntdll: Implement TpCallbackSetEventOnCompletion.
2015-07-02 14:54:04 +09:00
Sebastian Lackner
eb39cb1323
ntdll: Implement TpCallbackReleaseSemaphoreOnCompletion.
2015-07-02 14:53:50 +09:00
Sebastian Lackner
02ee5bb52d
ntdll: Implement TpCallbackReleaseMutexOnCompletion.
...
Various internal details about the order and error handling of completion
actions are documented in "Concurrent Programming on Windows" by Joe Duffy.
2015-07-02 14:53:41 +09:00
Sebastian Lackner
a9dd37be68
ntdll: Implement TpCallbackLeaveCriticalSectionOnCompletion.
...
An instance can only have one completion of each type, trying to add a
second one leads to an exception on Windows.
2015-07-02 14:53:21 +09:00
Sebastian Lackner
eb974bcd7a
ntdll: Implement instance objects and the TpCallbackMayRunLong function.
...
The instance is marked as long-running even if TpCallbackMayRunLong fails,
a second call will lead to an exception on Windows.
2015-07-02 14:53:02 +09:00
Sebastian Lackner
8fc2430c2a
ntdll: Implement threadpool RaceDll environment variable.
2015-07-02 14:52:44 +09:00
Sebastian Lackner
fa114f122b
ntdll: Add support for threadpool finalization callback.
2015-07-02 14:52:38 +09:00
Sebastian Lackner
1839ce8697
ntdll: Add support for threadpool group cancel callback.
2015-07-02 14:52:27 +09:00
Sebastian Lackner
e4c38f6bad
ntdll: Implement threadpool work item functions.
2015-07-01 19:18:15 +09:00
Sebastian Lackner
68d92bceed
ntdll: Implement threadpool cleanup group functions.
2015-07-01 19:18:14 +09:00
Sebastian Lackner
7d9ec31e19
ntdll: Implement TpSetPoolMinThreads.
2015-07-01 19:18:14 +09:00
Sebastian Lackner
d56984a03d
ntdll: Implement TpSetPoolMaxThreads.
2015-07-01 19:18:13 +09:00
Sebastian Lackner
db9fc9141e
ntdll: Implement TpSimpleTryPost and basic threadpool infrastructure.
2015-07-01 19:18:13 +09:00
Sebastian Lackner
41b24f2168
ntdll: Move all structs and definitions to the beginning in threadpool.c.
2015-03-17 14:52:07 +09:00
Sebastian Lackner
ae309c2d00
ntdll: Move static threadpool variables into a struct.
2015-03-10 15:33:20 +09:00
Nikolay Sivov
7b7d8374a4
ntdll: NtWaitForMultipleObjects()'s third arguments means 'wait_any', not 'wait_all'.
2014-09-01 13:03:07 +02:00
Sebastian Lackner
7ba4d119c1
ntdll: Use condition variable for RtlQueueWorkItem implementation.
2014-03-12 10:41:26 +01:00
Sebastian Lackner
9277fcfdb4
ntdll: Fix possible race-condition in iocp poller code.
2014-03-11 19:39:29 +01:00
Sebastian Lackner
23adc9aaed
ntdll: Fix incorrect value passed to RtlDeleteTimerQueueEx.
2014-01-30 10:35:53 +01:00
Alexandre Julliard
2810c5647f
ntdll: Add a magic number to validate timer queue pointers.
2013-08-20 20:13:58 +02:00
Jörg Höhle
2f0b93ca13
ntdll: Stabilize CreateTimerQueueTimer callbacks over time.
2013-02-19 19:50:54 +01:00
Jörg Höhle
4f6db78ca0
ntdll: Use the monotonic time counter also for timer queues.
2013-02-07 15:54:34 +01:00
Jörg Höhle
602807c2a5
ntdll: Do not execute callbacks past DeleteTimer(INVALID_HANDLE_VALUE).
2012-10-31 18:08:02 +01:00
Michael Stefaniuc
abef6ab366
ntdll: Avoid TRUE:FALSE conditional expressions.
2012-08-14 11:58:40 +02:00
Francois Gouget
fac36c55e9
Assorted typo, spelling, wording and case fixes.
2012-05-15 16:26:43 +02:00
Jörg Höhle
bcd2d0ec5b
ntdll: Use list_empty() instead of list_count() == 0.
2011-06-16 11:57:25 +02:00
Vitaliy Margolen
aafa74908b
ntdll: Mask invalid flags for RtlQueueWorkItem.
2010-11-11 18:12:47 +01:00
Alexandre Julliard
3b67ad9bd4
ntdll: Fix the NtCreateEvent prototype.
...
It takes an event type, not a manual reset flag.
2010-01-18 20:34:54 +01:00
Alexandre Julliard
82ebebc671
ntdll: Use INT_MAX for the semaphore count since LONG_MAX won't work on 64-bit.
2008-12-31 21:55:11 +01:00
Jeff Zaroyko
6c597bac2e
ntdll: Avoid NULL deref in RtlDeleteTimer.
2008-12-01 14:22:12 +01:00
Gerald Pfeifer
e375b0c4a2
Add return statements to avoid gcc warnings.
2008-08-20 12:53:22 +02:00
Dan Hipschman
a148e190af
ntdll: Add support for a default timer queue.
2008-07-30 12:44:25 +02:00
Dan Hipschman
2b287a4489
ntdll: Fix a small timer-queue bug whereby a deleted timer may still expire.
2008-07-28 11:32:21 +02:00
Dan Hipschman
4c64d0cdfa
ntdll: Implement RtlDeleteTimer for kernel32's DeleteTimerQueueTimer.
2008-07-25 14:09:15 +02:00
Dan Hipschman
396e47ef5c
ntdll: Implement RtlUpdateTimer for kernel32's ChangeTimerQueueTimer.
2008-07-25 14:09:15 +02:00
Dan Hipschman
5ef54c4cec
ntdll: Implement the timer queue thread.
2008-07-25 14:09:15 +02:00
Dan Hipschman
d343f2baf7
ntdll: Implement RtlCreateTimer for kernel32's CreateTimerQueueTimer.
2008-07-23 11:24:03 +02:00