Fixed init order on Win2000 Advanced Server.

Added missing project file for analyzer channel.


git-svn-id: http://yate.null.ro/svn/yate/trunk@864 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
paulc 2006-06-13 20:38:44 +00:00
parent 91d7e83b5b
commit fdeffa0e2b
3 changed files with 147 additions and 3 deletions

View File

@ -76,7 +76,19 @@ using namespace TelEngine;
#define KILL_WAIT 32
#ifdef _WINDOWS
static DWORD tls_index = ::TlsAlloc();
#define TLS_MAGIC 0xfeeb1e
static DWORD tls_index = TLS_MAGIC;
static DWORD getTls()
{
// this seems unsafe but is not - allocation happens once before
// any Thread is actually created
if (tls_index == TLS_MAGIC)
tls_index = ::TlsAlloc();
if (tls_index == (DWORD)-1)
// if it happened is REALLY BAD so better die quick and clean!
abort();
return tls_index;
}
#else
static pthread_key_t current_key;
@ -254,7 +266,7 @@ void ThreadPrivate::run()
{
DDebug(DebugAll,"ThreadPrivate::run() '%s' [%p]",m_name,this);
#ifdef _WINDOWS
::TlsSetValue(tls_index,this);
::TlsSetValue(getTls(),this);
#else
::pthread_setspecific(current_key,this);
pthread_cleanup_push(cleanupFunc,this);
@ -329,7 +341,7 @@ void ThreadPrivate::cleanup()
ThreadPrivate* ThreadPrivate::current()
{
#ifdef _WINDOWS
return reinterpret_cast<ThreadPrivate *>(::TlsGetValue(tls_index));
return reinterpret_cast<ThreadPrivate *>(::TlsGetValue(getTls()));
#else
return reinterpret_cast<ThreadPrivate *>(::pthread_getspecific(current_key));
#endif

View File

@ -212,6 +212,9 @@ Package=<4>
Begin Project Dependency
Project_Dep_Name _pbxassist
End Project Dependency
Begin Project Dependency
Project_Dep_Name _analyzer
End Project Dependency
}}}
###############################################################################
@ -291,6 +294,21 @@ Package=<4>
###############################################################################
Project: "_analyzer"=.\_analyzer.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name Libyate
End Project Dependency
}}}
###############################################################################
Project: "_callfork"=.\_callfork.dsp - Package Owner=<4>
Package=<5>

114
windows/_analyzer.dsp Normal file
View File

@ -0,0 +1,114 @@
# Microsoft Developer Studio Project File - Name="_analyzer" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
CFG=_analyzer - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "_analyzer.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "_analyzer.mak" CFG="_analyzer - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "_analyzer - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "_analyzer - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
!IF "$(CFG)" == "_analyzer - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release\modules"
# PROP Ignore_Export_Lib 1
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_analyzer_EXPORTS" /YX /FD /c
# ADD CPP /nologo /MD /W3 /O2 /I "." /I ".." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FD /c
# SUBTRACT CPP /YX
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
# ADD LINK32 kernel32.lib /nologo /dll /machine:I386 /out:"Release/analyzer.yate"
# SUBTRACT LINK32 /incremental:yes
!ELSEIF "$(CFG)" == "_analyzer - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Win32_Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug\modules"
# PROP Ignore_Export_Lib 1
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_analyzer_EXPORTS" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /Zi /Od /I "." /I ".." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FD /GZ /c
# SUBTRACT CPP /YX
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"Debug/analyzer.yate" /pdbtype:sept
!ENDIF
# Begin Target
# Name "_analyzer - Win32 Release"
# Name "_analyzer - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=..\modules\analyzer.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# Begin Source File
SOURCE=.\version.rc
# End Source File
# End Group
# End Target
# End Project