1
0
mirror of https://github.com/signalwire/freeswitch.git synced 2025-03-05 10:08:08 +00:00

freetdm: set sched API as not available for Windows

This commit is contained in:
Moises Silva 2010-05-27 15:37:29 -04:00
parent 22e8a44278
commit 23b9a148ef
2 changed files with 113 additions and 97 deletions

@ -94,6 +94,78 @@
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2"
CharacterSet="2"
WholeProgramOptimization="1"
BuildLogFile="$(IntDir)\BuildLog-freetdm.htm"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="../src/include;../src/include/private;../src/isdn/include"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FREETDM_EXPORTS;TELETONE_EXPORTS"
RuntimeLibrary="2"
DisableLanguageExtensions="false"
RuntimeTypeInfo="false"
UsePrecompiledHeader="0"
WarningLevel="4"
WarnAsError="true"
Detect64BitPortabilityProblems="false"
DebugInformationFormat="3"
CompileAs="1"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration <Configuration
Name="Debug|x64" Name="Debug|x64"
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
@ -171,78 +243,6 @@
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2"
CharacterSet="2"
WholeProgramOptimization="1"
BuildLogFile="$(IntDir)\BuildLog-freetdm.htm"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="../src/include;../src/include/private;../src/isdn/include"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;FREETDM_EXPORTS;TELETONE_EXPORTS"
RuntimeLibrary="2"
DisableLanguageExtensions="false"
RuntimeTypeInfo="false"
UsePrecompiledHeader="0"
WarningLevel="4"
WarnAsError="true"
Detect64BitPortabilityProblems="false"
DebugInformationFormat="3"
CompileAs="1"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration <Configuration
Name="Release|x64" Name="Release|x64"
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
@ -358,6 +358,10 @@
RelativePath="..\src\include\ftdm_os.h" RelativePath="..\src\include\ftdm_os.h"
> >
</File> </File>
<File
RelativePath="..\src\include\private\ftdm_sched.h"
>
</File>
<File <File
RelativePath="..\src\include\ftdm_threadmutex.h" RelativePath="..\src\include\ftdm_threadmutex.h"
> >
@ -436,6 +440,10 @@
RelativePath="..\src\ftdm_queue.c" RelativePath="..\src\ftdm_queue.c"
> >
</File> </File>
<File
RelativePath="..\src\ftdm_sched.c"
>
</File>
<File <File
RelativePath="..\src\ftdm_threadmutex.c" RelativePath="..\src\ftdm_threadmutex.c"
> >

@ -68,6 +68,10 @@ static void *run_main_schedule(ftdm_thread_t *thread, void *data)
int32_t sleepms; int32_t sleepms;
ftdm_status_t status; ftdm_status_t status;
ftdm_sched_t *current = NULL; ftdm_sched_t *current = NULL;
#ifdef __WINDOWS__
UNREFERENCED_PARAMETER(data);
UNREFERENCED_PARAMETER(thread);
#endif
while (ftdm_running()) { while (ftdm_running()) {
sleepms = SCHED_MAX_SLEEP; sleepms = SCHED_MAX_SLEEP;
@ -121,7 +125,7 @@ FT_DECLARE(ftdm_status_t) ftdm_sched_global_init()
FT_DECLARE(ftdm_status_t) ftdm_sched_free_run(ftdm_sched_t *sched) FT_DECLARE(ftdm_status_t) ftdm_sched_free_run(ftdm_sched_t *sched)
{ {
ftdm_status_t status; ftdm_status_t status = FTDM_FAIL;
ftdm_assert_return(sched != NULL, FTDM_EINVAL, "invalid pointer\n"); ftdm_assert_return(sched != NULL, FTDM_EINVAL, "invalid pointer\n");
ftdm_mutex_lock(sched_globals.mutex); ftdm_mutex_lock(sched_globals.mutex);
@ -137,6 +141,7 @@ FT_DECLARE(ftdm_status_t) ftdm_sched_free_run(ftdm_sched_t *sched)
} }
ftdm_log(FTDM_LOG_DEBUG, "Running schedule %s in the main schedule thread\n", sched->name); ftdm_log(FTDM_LOG_DEBUG, "Running schedule %s in the main schedule thread\n", sched->name);
status = FTDM_SUCCESS;
/* Add the schedule to the global list of free runs */ /* Add the schedule to the global list of free runs */
if (!sched_globals.freeruns) { if (!sched_globals.freeruns) {
@ -196,27 +201,21 @@ failed:
FT_DECLARE(ftdm_status_t) ftdm_sched_run(ftdm_sched_t *sched) FT_DECLARE(ftdm_status_t) ftdm_sched_run(ftdm_sched_t *sched)
{ {
ftdm_status_t status = FTDM_FAIL; ftdm_status_t status = FTDM_FAIL;
#ifdef __linux__
ftdm_timer_t *runtimer; ftdm_timer_t *runtimer;
ftdm_timer_t *timer; ftdm_timer_t *timer;
ftdm_sched_callback_t callback; ftdm_sched_callback_t callback;
int ms = 0; int ms = 0;
int rc = -1; int rc = -1;
void *data; void *data;
#ifdef __linux__
struct timeval now; struct timeval now;
#else
ftdm_log(FTDM_LOG_CRIT, "Not implemented in this platform\n");
return FTDM_NOTIMPL;
#endif
ftdm_assert_return(sched != NULL, FTDM_EINVAL, "sched is null!\n"); ftdm_assert_return(sched != NULL, FTDM_EINVAL, "sched is null!\n");
ftdm_mutex_lock(sched->mutex); ftdm_mutex_lock(sched->mutex);
tryagain: tryagain:
#ifdef __linux__
rc = gettimeofday(&now, NULL); rc = gettimeofday(&now, NULL);
#endif
if (rc == -1) { if (rc == -1) {
ftdm_log(FTDM_LOG_ERROR, "Failed to retrieve time of day\n"); ftdm_log(FTDM_LOG_ERROR, "Failed to retrieve time of day\n");
goto done; goto done;
@ -227,10 +226,8 @@ tryagain:
runtimer = timer; runtimer = timer;
timer = runtimer->next; timer = runtimer->next;
#ifdef __linux__
ms = ((runtimer->time.tv_sec - now.tv_sec) * 1000) + ms = ((runtimer->time.tv_sec - now.tv_sec) * 1000) +
((runtimer->time.tv_usec - now.tv_usec) / 1000); ((runtimer->time.tv_usec - now.tv_usec) / 1000);
#endif
if (ms <= 0) { if (ms <= 0) {
@ -264,6 +261,13 @@ tryagain:
done: done:
ftdm_mutex_unlock(sched->mutex); ftdm_mutex_unlock(sched->mutex);
#else
ftdm_log(FTDM_LOG_CRIT, "Not implemented in this platform\n");
status = FTDM_NOTIMPL;
#endif
#ifdef __WINDOWS__
UNREFERENCED_PARAMETER(sched);
#endif
return status; return status;
} }
@ -271,12 +275,11 @@ done:
FT_DECLARE(ftdm_status_t) ftdm_sched_timer(ftdm_sched_t *sched, const char *name, FT_DECLARE(ftdm_status_t) ftdm_sched_timer(ftdm_sched_t *sched, const char *name,
int ms, ftdm_sched_callback_t callback, void *data, ftdm_timer_t **timer) int ms, ftdm_sched_callback_t callback, void *data, ftdm_timer_t **timer)
{ {
ftdm_status_t status = FTDM_FAIL;
#ifdef __linux__ #ifdef __linux__
struct timeval now; struct timeval now;
#endif
int rc = 0; int rc = 0;
ftdm_timer_t *newtimer; ftdm_timer_t *newtimer;
ftdm_status_t status = FTDM_FAIL;
ftdm_assert_return(sched != NULL, FTDM_EINVAL, "sched is null!\n"); ftdm_assert_return(sched != NULL, FTDM_EINVAL, "sched is null!\n");
ftdm_assert_return(name != NULL, FTDM_EINVAL, "timer name is null!\n"); ftdm_assert_return(name != NULL, FTDM_EINVAL, "timer name is null!\n");
@ -287,12 +290,7 @@ FT_DECLARE(ftdm_status_t) ftdm_sched_timer(ftdm_sched_t *sched, const char *name
*timer = NULL; *timer = NULL;
} }
#ifdef __linux__
rc = gettimeofday(&now, NULL); rc = gettimeofday(&now, NULL);
#else
ftdm_log(FTDM_LOG_CRIT, "Not implemented in this platform\n");
return FTDM_NOTIMPL;
#endif
if (rc == -1) { if (rc == -1) {
ftdm_log(FTDM_LOG_ERROR, "Failed to retrieve time of day\n"); ftdm_log(FTDM_LOG_ERROR, "Failed to retrieve time of day\n");
return FTDM_FAIL; return FTDM_FAIL;
@ -309,14 +307,12 @@ FT_DECLARE(ftdm_status_t) ftdm_sched_timer(ftdm_sched_t *sched, const char *name
newtimer->callback = callback; newtimer->callback = callback;
newtimer->usrdata = data; newtimer->usrdata = data;
#ifdef __linux__
newtimer->time.tv_sec = now.tv_sec + (ms / 1000); newtimer->time.tv_sec = now.tv_sec + (ms / 1000);
newtimer->time.tv_usec = now.tv_usec + (ms % 1000) * 1000; newtimer->time.tv_usec = now.tv_usec + (ms % 1000) * 1000;
if (newtimer->time.tv_usec >= FTDM_MICROSECONDS_PER_SECOND) { if (newtimer->time.tv_usec >= FTDM_MICROSECONDS_PER_SECOND) {
newtimer->time.tv_sec += 1; newtimer->time.tv_sec += 1;
newtimer->time.tv_usec -= FTDM_MICROSECONDS_PER_SECOND; newtimer->time.tv_usec -= FTDM_MICROSECONDS_PER_SECOND;
} }
#endif
if (!sched->timers) { if (!sched->timers) {
sched->timers = newtimer; sched->timers = newtimer;
@ -333,33 +329,40 @@ FT_DECLARE(ftdm_status_t) ftdm_sched_timer(ftdm_sched_t *sched, const char *name
done: done:
ftdm_mutex_unlock(sched->mutex); ftdm_mutex_unlock(sched->mutex);
#else
ftdm_log(FTDM_LOG_CRIT, "Not implemented in this platform\n");
status = FTDM_NOTIMPL;
#endif
#ifdef __WINDOWS__
UNREFERENCED_PARAMETER(sched);
UNREFERENCED_PARAMETER(name);
UNREFERENCED_PARAMETER(ms);
UNREFERENCED_PARAMETER(callback);
UNREFERENCED_PARAMETER(data);
UNREFERENCED_PARAMETER(timer);
#endif
return status; return status;
} }
FT_DECLARE(ftdm_status_t) ftdm_sched_get_time_to_next_timer(const ftdm_sched_t *sched, int32_t *timeto) FT_DECLARE(ftdm_status_t) ftdm_sched_get_time_to_next_timer(const ftdm_sched_t *sched, int32_t *timeto)
{ {
ftdm_status_t status = FTDM_FAIL; ftdm_status_t status = FTDM_FAIL;
#ifdef __linux__
int res = -1; int res = -1;
int ms = 0; int ms = 0;
#ifdef __linux__
struct timeval currtime; struct timeval currtime;
#endif
ftdm_timer_t *current = NULL; ftdm_timer_t *current = NULL;
ftdm_timer_t *winner = NULL; ftdm_timer_t *winner = NULL;
/* forever by default */ /* forever by default */
*timeto = -1; *timeto = -1;
#ifndef __linux__
ftdm_log(FTDM_LOG_ERROR, "Implement me!\n"); ftdm_log(FTDM_LOG_ERROR, "Implement me!\n");
return FTDM_NOTIMPL; return FTDM_NOTIMPL;
#endif
ftdm_mutex_lock(sched->mutex); ftdm_mutex_lock(sched->mutex);
#ifdef __linux__
res = gettimeofday(&currtime, NULL); res = gettimeofday(&currtime, NULL);
#endif
if (-1 == res) { if (-1 == res) {
ftdm_log(FTDM_LOG_ERROR, "Failed to get next event time\n"); ftdm_log(FTDM_LOG_ERROR, "Failed to get next event time\n");
goto done; goto done;
@ -396,6 +399,11 @@ FT_DECLARE(ftdm_status_t) ftdm_sched_get_time_to_next_timer(const ftdm_sched_t *
done: done:
ftdm_mutex_unlock(sched->mutex); ftdm_mutex_unlock(sched->mutex);
#endif
#ifdef __WINDOWS__
UNREFERENCED_PARAMETER(timeto);
UNREFERENCED_PARAMETER(sched);
#endif
return status; return status;
} }