Commit Graph

223 Commits

Author SHA1 Message Date
Alexandre Julliard 0610549529 ntdll: Move all thread exit processing to exit_thread(), and make RtlExitUserThread() CPU-specific. 2009-06-18 17:06:21 +02:00
Alexandre Julliard f124c7cc38 ntdll: Simplify the thread startup routine and make it CPU-specific. 2009-06-18 17:01:44 +02:00
Alexandre Julliard 5316dd011f server: Define a generic context structure instead of using the platform-specific version. 2009-04-08 19:59:23 +02:00
Alexandre Julliard b06a919c3c server: Use the thread entry point field to pass the PEB in the initial thread. 2009-04-03 14:30:34 +02:00
Alexandre Julliard 5170b1b456 ntdll: Remove no longer used pthread_functions structure. 2009-03-30 15:04:51 +02:00
Alexandre Julliard c456721435 ntdll: Get rid of the no longer used pthread emulation. 2009-03-26 13:20:04 +01:00
Alexandre Julliard 75be87dd75 ntdll: Move the copy_context function into the respective CPU-specific files. 2009-03-13 11:31:25 +01:00
Alexandre Julliard 1056771b91 ntdll: Allocate the stack for all threads, don't rely on pthread to do it for us. 2009-02-23 14:24:59 +01:00
Alexandre Julliard 67e45d66d3 ntdll: Don't free the thread stack and TEB while exiting, do it from the next thread. 2009-02-23 14:24:03 +01:00
Alexandre Julliard 1ac7bafcb2 ntdll: Call pthread_create and pthread_exit directly from ntdll. 2009-02-20 18:07:42 +01:00
Alexandre Julliard cc933f586a ntdll: Moved exit_thread and abort_thread functions to thread.c. 2009-02-20 18:07:41 +01:00
Alexandre Julliard 36334a1b5a ntdll: Call pthread_sigmask directly instead of through the pthread function table. 2009-02-20 18:07:41 +01:00
Alexandre Julliard 66255772fc ntdll: Move the CPU-specific handling of current TEB to the respective signal files. 2009-02-18 13:04:50 +01:00
Alexandre Julliard 5adfec2883 ntdll: Determine the Unix tid for the server directly in ntdll. 2009-02-18 12:30:01 +01:00
Juan Lang 3d7118bcd1 ntdll: Implement the ThreadAffinityMask query. 2009-01-23 13:47:14 +01:00
Alexandre Julliard 913e792b57 server: Store process/thread affinity as a 64-bit value. 2009-01-19 14:15:51 +01:00
Alexandre Julliard 14c452fe78 ntdll: Replaced get_cpu_context by RtlCaptureContext. Implemented it for x86_64. 2009-01-06 17:50:34 +01:00
Alexandre Julliard fa8643805b server: Make TEB and PEB client_ptr_t instead of void pointers. 2008-12-31 15:09:59 +01:00
Alexandre Julliard 6db201080f server: Make the various async I/O parameters client_ptr_t instead of void pointers. 2008-12-30 21:09:41 +01:00
Alexandre Julliard f69e62207b server: Make the arguments for CreateRemoteThread client_ptr_t instead of void pointers. 2008-12-30 15:30:11 +01:00
Alexandre Julliard b660aaa9ea server: Use the same field for process and thread handle in the queue_apc request. 2008-12-26 12:33:31 +01:00
Alexandre Julliard b9e10147d9 ntdll: NtCurrentTeb is not exported on x86_64. 2008-12-15 13:32:15 +01:00
Alexandre Julliard d1b3d484f7 server: Add functions for conversions between server object handles and pointer-style handles. 2008-12-08 16:05:17 +01:00
Alexandre Julliard 5002bd21d1 kernel32: Moved the pthread emulation support to ntdll. 2008-10-30 15:39:50 +01:00
Alexandre Julliard 74cdb539a4 ntdll: Store the exit code in the server in RtlExitUserThread. 2008-10-29 20:37:43 +01:00
Andrew Talbot a63749cce0 ntdll: Sign-compare warnings fix. 2008-10-24 14:25:00 +02:00
Alexandre Julliard 531ff0be26 ntdll: Split the signal setup into process-wide and thread-specific routines. 2008-07-03 20:18:23 +02:00
Alexandre Julliard 600694546f ntdll: Moved stack allocation for thread and process to a common routine in virtual.c. 2008-04-01 14:11:44 +02:00
Andrew Talbot 08ae56545e ntdll: Remove superfluous semicolon. 2008-04-01 11:29:20 +02:00
Alexandre Julliard 5625c6079e Get rid of the global thread.h header. 2008-03-01 11:57:00 +01:00
Alexandre Julliard 6d6e9a42b1 ntdll: Added definitions and structures for fiber local storage. 2008-02-29 19:55:34 +01:00
Alexandre Julliard 78fba54ab7 ntdll: Store the unhandled exception filter at startup to avoid race conditions. 2008-02-12 22:39:19 +01:00
Alexandre Julliard 3bf12b9aca server: Don't force the process affinity to 1, leave it up to the client. 2008-01-17 13:40:03 +01:00
Alexandre Julliard f45b7078bf ntdll: Copy extended registers too in copy_context(). 2008-01-15 20:36:40 +01:00
Dmitry Timoshkov f2f3de20ac ntdll: Initialize the APC call union to suppress valgrind warnings. Take 2. 2007-12-11 17:49:57 +01:00
Alexandre Julliard 3ae370dc71 ntdll: Added a sleep in NtGet/SetContextThread, a yield is not enough on some kernels. 2007-12-03 13:55:25 +01:00
Paul Vriens 2f09f50641 ntdll: Report FIXME only once. 2007-10-30 11:29:54 +01:00
Alexandre Julliard 44c9758d05 ntdll: Move private data to make room in the TEB for the activation context data. 2007-07-19 16:56:10 +02:00
Andrew Talbot e3708a60b4 ntdll: Constify some variables. 2007-06-28 11:00:53 +02:00
Dmitry Timoshkov e142779b09 ntdll: Fix compilation warnings in 64-bit mode. 2007-05-23 13:10:20 +02:00
Francois Gouget 820d954095 ntdll: Fix compilation on systems that don't support nameless unions. 2007-05-21 12:38:54 +02:00
Alexandre Julliard 5aa70b3d80 ntdll: Setup the shared user data structure at 0x7ffe0000. 2007-05-18 18:09:03 +02:00
Alexandre Julliard aaf477f292 server: Change the timeout handling to use NT-style 64-bit timeouts everywhere. 2007-04-17 20:08:59 +02:00
Alexandre Julliard 42050fbf91 ntdll: Fixed typo in previous patch, spotted by Ken Thomases. 2007-03-14 15:02:22 +01:00
Alexandre Julliard 7744443feb ntdll: Add a wrapper to call the thread entry point for broken apps. 2007-03-14 12:28:38 +01:00
Alexandre Julliard 8025f79ce1 ntdll: Implementation of inter-process RtlCreateUserThread. 2007-01-18 15:02:55 +01:00
Alexandre Julliard 7a383cf83f ntdll: Abuse RtlCreateUserThread to call the thread function for CreateThread directly. 2007-01-18 15:02:11 +01:00
Alexandre Julliard 21d631e270 ntdll: Move the LDT section to ntdll and make it an uninterruptible section. 2007-01-18 15:01:45 +01:00
Alexandre Julliard 8891d6de48 ntdll: Block async signals during process init and thread creation. 2007-01-18 12:23:04 +01:00
Alexandre Julliard fb75c66897 ntdll: Avoid heap allocations during thread creation. 2007-01-18 12:20:10 +01:00
Joel Parker 2319999a05 Remove redundant semicolons for ANSI compatibility. 2007-01-17 11:58:15 +01:00
Alexandre Julliard 6ca1d1b081 server: Support queuing some APCs to a process instead of a thread. 2007-01-15 22:26:32 +01:00
Andrew Talbot 16cb898600 ntdll: Remove unused function. 2007-01-15 14:23:04 +01:00
Alexandre Julliard 5c8421d3e7 server: Add a generic apc_call structure to make it easier to extend, and more type-safe. 2007-01-04 13:40:09 +01:00
Eric Pouech 5b1f3b14ca ntdll: Fixed returned status for NtQueryThreadInformation's ThreadDescriptorTable
(spotted by Peter Oberndorfer).
2006-11-15 11:24:41 +01:00
Eric Pouech 8cb932ea89 ntdll: Implemented AmILastThread information class for NtQueryInformationThread. 2006-10-03 20:20:13 +02:00
Alexandre Julliard 530e765035 include: Exception filters should return LONG, not DWORD.
Also move UnhandledExceptionFilter definitions to winbase.h since they
are there in the latest SDK.
2006-09-20 11:26:59 +02:00
Alexandre Julliard 3095a48d6f server: Convert thread creation/exit times to the abs_time_t type. 2006-07-26 14:49:55 +02:00
Alexandre Julliard 6c9ade0529 ntdll: Allocate the PEB with NtAllocateVirtualMemory too. 2006-07-24 15:19:32 +02:00
Alexandre Julliard 0c453bc7c6 ntdll: Use NtAllocateVirtualMemory to allocate all TEBs except the first one. 2006-07-21 20:20:30 +02:00
Pierre d'Herbemont 6d0e51fb66 ntdll: Fix NtQueryInformationThread on non x86. 2006-06-09 21:08:14 +02:00
Eric Pouech 2d3504c309 ntdll/kernel32: Moved GetThreadSelectorEntry to ntdll.
- implemented NtQueryInformationThread's ThreadDescriptorTableEntry
  information class
- used it to implement the kernel32's equivalent (GetThreadSelectorEntry)
2006-05-27 13:00:19 +02:00
Jonathan Ernst 360a3f9142 Update the address of the Free Software Foundation. 2006-05-23 14:11:13 +02:00
Michael Stefaniuc 7a8818e717 Don't check pointers for NULL before RtlFreeHeap. It is redundant. 2006-05-05 20:59:50 +02:00
Alexandre Julliard d2ad6f8355 ntdll: Get registers on the client side for NtGetContextThread on the current thread. 2006-04-20 15:40:28 +02:00
Juan Lang fced68672f ntdll: Initialize a variable.
Fix an uninitialized pointer in RtlCreateUserThread, caught by
coverity.
2006-04-11 11:23:49 +02:00
Robert Shearman ea6f3a4cc0 ntdll: Move the call to MODULE_DllThreadAttach from the kernel32
thread creation function to the NTDLL one.
2006-03-14 17:50:28 +01:00
Alexandre Julliard 477b3bf566 kernel: Moved the get_startup_info call to ntdll. 2006-02-22 09:57:19 +01:00
Alexandre Julliard a19e3eeb20 ntdll: Move the TEB register to the ntdll_thread_regs structure. 2006-01-20 16:18:06 +01:00
Alexandre Julliard 2878d99216 ntdll: Add debug registers to the context of all exceptions.
Maintain a local cache of the debug registers to avoid server calls
where possible.
2006-01-13 13:58:14 +01:00
Alexandre Julliard 2654be08d5 ntdll: Handle NtSetContextThread on the client side (as far as
possible) when setting the context of the current thread.
2006-01-11 20:20:32 +01:00
Eric Pouech 329ab98940 ntdll: Implemented ntdll.NtSetInformationThread(ThreadAffinityMask).
Reimplemented kernel32.SetThreadAffinityMask on top of it.
2006-01-11 12:32:19 +01:00
Alexandre Julliard efffa66330 ntdll: Don't use a real guard page at the bottom of the stack.
A no-access page is enough, we can't properly raise an overflow
exception anyway.
2005-12-17 18:47:03 +01:00
Alexandre Julliard f3dad37ba2 TEB.StackLimit should not include the guard page. 2005-12-12 17:28:32 +01:00
Alexandre Julliard d02c4a1b82 Make wine_server_fd_to_handle use attributes instead of inherit flag. 2005-12-09 12:22:35 +01:00
Alexandre Julliard f2d7dd645e server: Use attributes instead of inherit flag in process and thread requests. 2005-12-09 12:13:11 +01:00
Ge van Geldorp 1a1583a364 Match PSDK STATUS_* definitions. 2005-11-28 17:32:54 +01:00
Eric Pouech 63e5d5e5b9 Init wShowWindow in RTL_USER_PARAMETERS for Wine processes started
from the command-line.
2005-11-14 11:21:13 +00:00
Kevin Koltzau 079e7cac17 x86_64 references a named union, ensure unions are not nameless. 2005-11-05 10:43:50 +00:00
Vitaliy Margolen 4e76f91f1a Get rid of CPU id when copying context 2005-11-03 09:54:47 +00:00
Alexandre Julliard 73c72390f8 Fixed Get/SetThreadContext to work properly on suspended threads.
Added a test case.
2005-11-02 20:54:12 +00:00
Alexandre Julliard d6f7adb367 Don't send the incoming context to the server for get_thread_context,
instead copy only the relevant fields of the return value on the
client side.
2005-11-01 21:41:26 +00:00
Alexandre Julliard fb9cead92b Support arbitrary sizes for the thread signal stack, and set the
default size from the MINSIGSTKSZ constant.
2005-09-14 10:36:58 +00:00
Eric Pouech ad0168967e Implemented kernel32.GetThreadTimes on top of ntdll's equivalent
function.
2005-09-12 22:01:33 +00:00
Alexandre Julliard 884599112e Use SIZE_T instead of ULONG for the size arguments of the virtual
memory functions.
2005-09-12 10:36:06 +00:00
Eric Pouech 60cae6e289 Implemented kernel32:SetThreadPriority on top of ntdll's equivalent
functions.
2005-09-07 13:25:35 +00:00
Alexandre Julliard 883d3c52d3 Use explicit function pointers for pthread support instead of relying
on ELF symbol overriding.
2005-09-03 15:11:29 +00:00
Alexandre Julliard a5156dcf40 Added a stub for NtAlertResumeThread. 2005-08-18 11:47:17 +00:00
Alexandre Julliard 9f32a5c865 Added a VIRTUAL_alloc_teb function to allocate TEBs while making sure
they don't end up above the address space limit.
2005-08-09 10:43:47 +00:00
Alexandre Julliard 4de75b5a6f Use the new RtlExitUserThread function instead of exporting
wine_server_exit_thread.
2005-08-02 09:55:40 +00:00
Alexandre Julliard 3be8cb8b02 Moved initialization of the default user process parameters to ntdll. 2005-07-14 12:33:30 +00:00
Alexandre Julliard 11ad6a0ac4 Return the startup info size in the init_thread request, and allocate
the process parameters structure in ntdll instead of kernel.
2005-07-13 19:43:35 +00:00
Alexandre Julliard 60b3d30f9b Don't require execute permission for thread stacks. 2005-06-21 09:57:53 +00:00
Robert Shearman 4bba21643c Add support for impersonating a token. 2005-06-20 13:18:38 +00:00
Alexandre Julliard 811e966083 The TEB doesn't need execute permissions. 2005-06-17 12:15:44 +00:00
Alexandre Julliard ab29aa2126 Moved the ntdll per-thread data out of the TEB into a private
structure stored in TEB.SystemReserved2.
2005-06-06 20:04:33 +00:00
Alexandre Julliard 9b57a950d7 Avoid accessing the htask16 TEB field from ntdll. 2005-06-05 18:24:35 +00:00
Alexandre Julliard 86be9f20da Removed the MESSAGEQUEUE structure, and store the corresponding
information directly in the TEB, in the Win32ClientInfo field.
2005-04-27 08:18:20 +00:00
Alexandre Julliard f1020bc6e0 Added support for the TLS expansion slots, adding an extra 1024
entries.
2005-03-19 17:14:12 +00:00
Ivan Leo Puoti d3edafe1e2 Replace GetCurrentProcess() with NtCurrentProcess() in ntdll. 2005-02-22 19:33:50 +00:00
Robert Shearman 2050591370 Fix NtAllocateVirtualMemory declaration and fix users of the
function.
2004-10-11 20:59:06 +00:00
Alexander Yaworsky 8657ad8704 Make RtlCreateUserThread fail if process handle is not for the current
process.
2004-09-21 00:23:50 +00:00
Francois Gouget 61d21ce706 Update RTL_BITMAP and RTL_BITMAP_RUN to match the 2000 DDK.
Only test the Rtl{Initialize,SetAll,ClearAll}Bits macros if they are
defined.
2004-08-23 18:52:54 +00:00
Mike McCormack edf55ec7d9 Implement SetThreadToken using NtSetInformationThread. 2004-08-13 23:20:27 +00:00
Alexandre Julliard cc461324da Store the number of processors in the PEB structure.
More correct support for setting critical section spin counts (based
on a patch by Robert Shearman).
2004-06-15 00:52:03 +00:00
Patrik Stridvall 070db4e5de Fixed some issues found by winapi_check. 2004-05-17 21:08:31 +00:00
Alexandre Julliard a45931c6f3 Get rid of the TEB flags, they are no longer used. 2004-04-15 05:04:53 +00:00
Alexandre Julliard 4fac95df3d Fixed a couple of race conditions in the wine_pthread routines at
thread startup and exit.
2004-02-05 02:01:35 +00:00
Alexandre Julliard af542075e7 Don't use constructors for ntdll and kernel32 initialization. 2004-01-07 04:50:11 +00:00
Alexandre Julliard 6281d82e87 Store the thread entry point in the startup info passed to the new
thread instead of the TEB.
2003-11-25 03:42:05 +00:00
Alexandre Julliard 746d900b04 Force minimum stack size to 1Mb for Xlib. 2003-11-18 00:14:17 +00:00
Alexandre Julliard 50fba7ffec Moved the remaining SYSDEPS_* functions to the wine_pthread interface.
Let the pthread library allocate the stack itself.
2003-11-09 01:25:23 +00:00
Alexandre Julliard 4dba172e55 Added server_abort_thread to replace SYSDEPS_AbortThread.
Removed no longer used SIGNAL_Block and SIGNAL_Reset.
Moved some internal ntdll definitions to ntdll_misc.h.
2003-11-06 00:08:05 +00:00
Alexandre Julliard 8574412e1e Added wine_pthread_create_thread and wine_pthread_exit_thread to the
pthread support, and removed the corresponding SYSDEPS functions.
Moved stack allocation for new threads to wine_pthread_create_thread
to allow more flexibility.
2003-11-05 23:31:11 +00:00
Alexandre Julliard 7924f421e9 Allocate the TEB and signal stack separately from the main stack.
Dynamically allocate the initial TEB too so that it is properly
page-aligned.
2003-11-04 04:50:18 +00:00
Alexandre Julliard 7370f60120 Implemented RtlCreateUserThread, and use it to move thread creation to
ntdll.
2003-10-31 00:16:20 +00:00
Alexandre Julliard 5cb5aa6346 Use the Rtl bitmap functions to implement Tls allocation.
Get rid of the PDB structure.
2003-10-09 19:58:56 +00:00
Alexandre Julliard 20e73d739a Moved the constructor for the initial TEB to ntdll so that it runs as
early as possible on startup.
2003-10-09 04:59:03 +00:00
Alexandre Julliard 2eb5d8b9b1 On TlsFree, clear the released TLS index in all threads. 2003-09-08 19:02:01 +00:00
Alexandre Julliard e37c6e18d0 Fixed header dependencies to be fully compatible with the Windows
headers (with help from Dimitrie O. Paun).
2003-09-05 23:08:26 +00:00
Alexandre Julliard 7df1b9e03a Start using the exported TEB structure from winternl.h where
possible.
2003-08-28 19:57:35 +00:00
Alexandre Julliard 4f196ead13 Implemented the ThreadBasicInformation case for
NtQueryInformationThread.
2003-07-09 02:57:57 +00:00
Alexandre Julliard 088bcf9ca5 Implemented NtQueueApcThread, and changed the server APC interface to
always take 3 parameters.
Implemented a number of other ntdll thread functions, and use them
from the kernel ones.
2003-04-04 22:26:34 +00:00