Commit Graph

3504 Commits

Author SHA1 Message Date
Sebastian Lackner 4a1629c411 ntdll: Avoid possible deadlock by using _exit() in NtTerminateProcess.
When threads are killed with SIGQUIT some locks can be in an undefined
state, and it not safe to call exit handlers.
2015-07-17 14:29:04 +09:00
Dmitry Timoshkov 21c3724813 ntdll: Cache contents of IMAGE_TLS_DIRECTORY instead of saving a directory pointer. 2015-07-15 15:13:16 +09:00
Erich E. Hoover e9d7cf99ad ntdll: Only set the security cookie if it has not already been set. 2015-07-14 16:43:30 +09:00
Alasdair Sinclair 241b3928b1 ntdll: Add missing WINAPI to RtlDecompressFragment. 2015-07-14 14:54:54 +09:00
Sebastian Lackner b687fee66f ntdll: Fix incorrect assignment in assert statement (Coverity). 2015-07-13 14:44:40 +09:00
Sebastian Lackner db1e8a686e ntdll/tests: Add tests for RtlDecompressFragment. 2015-07-10 14:54:57 +09:00
Sebastian Lackner 0e7bd45571 ntdll/tests: Add tests for RtlDecompressBuffer. 2015-07-10 14:54:54 +09:00
Sebastian Lackner e3503799d9 ntdll: Implement RtlDecompressFragment.
Based on a patch by Michael Müller.
2015-07-10 14:54:50 +09:00
Sebastian Lackner 577332f612 ntdll: Implement semi-stub for RtlGetCompressionWorkSpaceSize. 2015-07-09 17:34:48 +09:00
Sebastian Lackner ee899dc55e ntdll/tests: Add tests for RtlGetCompressionWorkSpaceSize. 2015-07-09 17:34:46 +09:00
Sebastian Lackner 275424e939 ntdll: Implement semi-stub for LZNT1 compression in RtlCompressBuffer.
This stub implementation just emits uncompressed blocks with
appropriate chunk headers.
2015-07-09 17:34:41 +09:00
Sebastian Lackner 025ea11dc4 ntdll/tests: Add tests for RtlCompressBuffer. 2015-07-09 17:34:37 +09:00
André Hentschel 7e1c886fbf ntdll: Randomize security cookie when available. 2015-07-08 16:20:06 +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 634bbed3fb ntdll/tests: Add threadpool wait tests with more than 63 objects. 2015-07-06 14:49:39 +09:00
Sebastian Lackner 553ae488d0 ntdll/tests: Add basic tests for threadpool wait objects. 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 9f71015a99 ntdll/tests: Add tests for threadpool timer merging. 2015-07-03 13:06:50 +09:00
Sebastian Lackner aefb85ddab ntdll/tests: Add basic tests for threadpool timer functions. 2015-07-03 13:06:45 +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 66c46e6960 ntdll/tests: Add tests for TpDisassociateCallback. 2015-07-03 13:06:21 +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 3dc1c6442a ntdll/tests: Add tests for TpCallbackReleaseSemaphoreOnCompletion and finalization callback. 2015-07-02 14:53:56 +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 e8d4b40386 ntdll/tests: Add tests for threadpool group cancel callback. 2015-07-02 14:52:32 +09:00
Sebastian Lackner 1839ce8697 ntdll: Add support for threadpool group cancel callback. 2015-07-02 14:52:27 +09:00
Sebastian Lackner b75d7f064c ntdll/tests: Add threadpool scheduler tests for work items. 2015-07-01 19:18:16 +09:00
Sebastian Lackner 17cd2a8b24 ntdll/tests: Add basic tests for threadpool work items. 2015-07-01 19:18:16 +09:00
Sebastian Lackner e4c38f6bad ntdll: Implement threadpool work item functions. 2015-07-01 19:18:15 +09:00
Sebastian Lackner 3606b47139 ntdll/tests: Add tests for TpAllocCleanupGroup and related 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
André Hentschel d37f407645 ntdll: Silence warning about TAPE_GetStatus when sys/mtio.h is not available. 2015-06-30 14:42:13 +09:00
Sebastian Lackner d082ea3eab ntdll: Implement support for AT_ROUND_TO_PAGE flag in NtMapViewOfSection. 2015-06-26 20:35:05 +09:00
Sebastian Lackner 7a8470ea94 ntdll: NtMapViewOfSection should fail if both addr_ptr and zero_bits is set. 2015-06-26 20:35:05 +09:00
André Hentschel 8d4917e865 include: Add IMAGE_LOAD_CONFIG_DIRECTORY64 definition. 2015-06-24 15:37:02 +09:00
Nikolay Sivov 0824771423 kernel32: Export RtlCopyMemory(). 2015-06-19 19:10:45 +09:00