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
Dan Hipschman
20a1ca2bbf
ntdll: Implement [Rtl]Create/DeleteTimerQueue[Ex].
2008-07-22 13:24:21 +02:00
Andrew Talbot
00981b580a
ntdll: Remove unneeded casts.
2008-01-14 13:10:00 +01:00
Rob Shearman
25bc7023ba
ntdll: Implement RtlRegisterWait, RtlDeregisterWait and RtlDeregisterWaitEx.
2008-01-02 14:30:08 +01:00
Andrew Talbot
1ebe82af65
ntdll: Remove unneeded casts.
2007-12-31 16:45:22 +01:00
Andrey Turkin
343f2c1b30
ntdll: Implement BindIoCompletionCallback.
2007-12-21 13:52:34 +01:00
Andrew Talbot
0108667754
ntdll: Replace inline static with static inline.
2007-03-17 20:03:57 +01:00
Rob Shearman
7e1fead3fb
ntdll: Don't print a fixme in RtlQueueUserWorkItem if WT_EXECUTELONGFUNCTION is specified
...
since that is what the current behaviour is tuned for.
2007-01-04 21:14:49 +01:00