Commit Graph

3492 Commits

Author SHA1 Message Date
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
André Hentschel 1133295267 ntdll: Set TPIDRURW inline on ARM. 2015-06-17 18:19:55 +09:00
André Hentschel aa139d3e86 ntdll: Set platform register x18 to TEB on ARM64. 2015-06-17 18:19:55 +09:00
Mohamed Mediouni 2b095beace ntdll: Multiply r4 with the word size in ARM for __chkstk. 2015-06-16 23:56:44 +09:00
André Hentschel bef85a14f6 ntdll: Fix CONTEXT_ARM in RtlCaptureContext. 2015-06-15 15:29:03 +09:00
André Hentschel cd258bef79 ntdll: Implement RtlCaptureContext on ARM64. 2015-06-15 15:29:03 +09:00
André Hentschel bd1f7ef186 include: Rename 64-bit PState to 32-bit Cpsr on ARM64. 2015-06-15 14:51:33 +09:00
Erich E. Hoover cdefae9ef2 ntdll: Fix IOCTL_DVD_READ_STRUCTURE expected output size. 2015-06-15 14:50:19 +09:00
Ken Thomases 3b74ac0f08 ntdll: Fix the "not found" status set by read_directory_stat() and read_directory_getattrlist() for when restart_scan is set. 2015-06-12 21:22:42 +09:00
Ken Thomases e7fa766378 Revert "ntdll: Avoid one of the calls to getattrlist() when read_directory_getattrlist() checks the case sensitivity of the file system.".
This was wrong-headed and could never have worked.  The second getattrlist()
call that I was trying to avoid was only necessary when the first fails.  Given
that the first failed, its results can't be used to avoid the second, no matter
what information we requested.

This reverts commit 5514df9d4e.
2015-06-12 21:22:42 +09:00
Sebastian Lackner bdef5c5508 ntdll/tests: Add tests for info struct size for FileDispositionInformation. 2015-06-11 15:32:30 +09:00
Sebastian Lackner 8ddab2c2f4 ntdll: Fix status code when NtMapViewOfSection parameter check fails. 2015-06-08 15:34:04 +09:00
Ken Thomases 82dd799d52 ntdll: Add partial support for version 3 of DWARF CIEs which are generated by Clang/LLVM. 2015-06-05 18:40:39 +09:00