mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-05-30 23:42:35 +02:00
* Moved DLL_xxx declarations to sysos.inc, so they can be reused by wince.
* systlsdir.inc: don't invent own symbols for the same purpose, defining DLL_xx conditionally is enough to avoid duplicate declarations. git-svn-id: trunk@20363 -
This commit is contained in:
parent
c45914fc27
commit
167ee9867e
@ -63,6 +63,12 @@ const
|
||||
VER_PLATFORM_WIN32_WINDOWS = 1;
|
||||
VER_PLATFORM_WIN32_NT = 2;
|
||||
|
||||
{ DllEntryPoint }
|
||||
DLL_PROCESS_ATTACH = 1;
|
||||
DLL_THREAD_ATTACH = 2;
|
||||
DLL_PROCESS_DETACH = 0;
|
||||
DLL_THREAD_DETACH = 3;
|
||||
|
||||
{ These constants are used for conversion of error codes }
|
||||
{ from win32 i/o errors to tp i/o errors }
|
||||
{ errors 1 to 18 are the same as in Turbo Pascal }
|
||||
|
@ -20,16 +20,13 @@
|
||||
{ Process TLS callback function }
|
||||
{ This is only useful for executables
|
||||
for DLLs, DLL_Entry gets called. PM }
|
||||
{ The consts are the same as for DDL_Entry,
|
||||
but as this file can be either in system unit or sysinitXXX
|
||||
we need to rename them with EXEC prefix
|
||||
to avoid duplicate entries. }
|
||||
Const
|
||||
EXEC_PROCESS_ATTACH = 1;
|
||||
EXEC_THREAD_ATTACH = 2;
|
||||
EXEC_PROCESS_DETACH = 0;
|
||||
EXEC_THREAD_DETACH = 3;
|
||||
{$ifdef FPC_INSSIDE_SYSINIT}
|
||||
Const
|
||||
DLL_PROCESS_ATTACH = 1;
|
||||
DLL_THREAD_ATTACH = 2;
|
||||
DLL_PROCESS_DETACH = 0;
|
||||
DLL_THREAD_DETACH = 3;
|
||||
|
||||
var
|
||||
TlsKey : dword; external name '_FPC_TlsKey';
|
||||
|
||||
@ -56,11 +53,11 @@ procedure Exec_Tls_callback(Handle : pointer; reason : Dword; Reserved : pointer
|
||||
if IsLibrary then
|
||||
Exit;
|
||||
case reason of
|
||||
{ For executables, EXEC_PROCESS_ATTACH is called *before* the entry point,
|
||||
and EXEC_PROCESS_DETACH is called *after* RTL shuts down and calls ExitProcess.
|
||||
{ For executables, DLL_PROCESS_ATTACH is called *before* the entry point,
|
||||
and DLL_PROCESS_DETACH is called *after* RTL shuts down and calls ExitProcess.
|
||||
It isn't a good idea to handle resources of the main thread at these points.
|
||||
InitSystemThreads is necessary however, because if some statically loaded
|
||||
DLL creates a thread, it will invoke EXEC_THREAD_ATTACH before anything else is
|
||||
DLL creates a thread, it will invoke DLL_THREAD_ATTACH before anything else is
|
||||
initialized.
|
||||
TODO: The problem is that InitSystemThreads depends (in case of Win32)
|
||||
on EntryInformation which is not available at this point.
|
||||
@ -68,13 +65,13 @@ procedure Exec_Tls_callback(Handle : pointer; reason : Dword; Reserved : pointer
|
||||
to sysinit unit or something like that.
|
||||
Exec_Tls_Callback is now part of sysinit unit for win32
|
||||
and the EntryInformation is a constant which sholud prevent troubles }
|
||||
EXEC_PROCESS_ATTACH:
|
||||
DLL_PROCESS_ATTACH:
|
||||
begin
|
||||
InitHeap;
|
||||
InitSystemThreads;
|
||||
end;
|
||||
|
||||
EXEC_THREAD_ATTACH :
|
||||
DLL_THREAD_ATTACH :
|
||||
begin
|
||||
{ !!! SysInitMultithreading must NOT be called here. Windows guarantees that
|
||||
the main thread invokes PROCESS_ATTACH, not THREAD_ATTACH. So this always
|
||||
@ -92,7 +89,7 @@ procedure Exec_Tls_callback(Handle : pointer; reason : Dword; Reserved : pointer
|
||||
{ passing a dummy is ok, the correct value is read from the coff header of SysInstance (FK) }
|
||||
InitThread($1000000); { Assume everything is idempotent there, as the thread could have been created with BeginThread... }
|
||||
end;
|
||||
EXEC_THREAD_DETACH :
|
||||
DLL_THREAD_DETACH :
|
||||
begin
|
||||
if TlsGetValue(TLSKey)<>nil then
|
||||
DoneThread; { Assume everything is idempotent there }
|
||||
|
@ -247,10 +247,6 @@ const
|
||||
|
||||
|
||||
Const
|
||||
DLL_PROCESS_ATTACH = 1;
|
||||
DLL_THREAD_ATTACH = 2;
|
||||
DLL_PROCESS_DETACH = 0;
|
||||
DLL_THREAD_DETACH = 3;
|
||||
DLLExitOK : boolean = true;
|
||||
Var
|
||||
DLLBuf : Jmp_buf;
|
||||
|
@ -848,13 +848,6 @@ var
|
||||
_SS : Cardinal;
|
||||
{$endif cpu386}
|
||||
|
||||
Const
|
||||
{ DllEntryPoint }
|
||||
DLL_PROCESS_ATTACH = 1;
|
||||
DLL_THREAD_ATTACH = 2;
|
||||
DLL_PROCESS_DETACH = 0;
|
||||
DLL_THREAD_DETACH = 3;
|
||||
|
||||
function Dll_entry : longbool;[public, alias : '_FPC_DLL_Entry'];
|
||||
begin
|
||||
IsLibrary:=true;
|
||||
|
Loading…
Reference in New Issue
Block a user