1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2024-12-01 09:24:10 +01:00

Conditional signaling now works on linux

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1075 ebee16cc-31ac-478f-84a7-5cbb03baadba
This commit is contained in:
peabody124 2010-07-11 21:42:59 +00:00 committed by peabody124
parent 2ed0ffd922
commit 68be63bc50
2 changed files with 11 additions and 3 deletions

View File

@ -76,7 +76,7 @@
#define MAX_NUMBER_OF_TASKS ( _POSIX_THREAD_THREADS_MAX ) #define MAX_NUMBER_OF_TASKS ( _POSIX_THREAD_THREADS_MAX )
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
#ifndef __DARWIN__ #ifdef __APPLE__
#define COND_SIGNALING #define COND_SIGNALING
#define CHECK_TASK_RESUMES #define CHECK_TASK_RESUMES
#define RUNNING_THREAD_MUTEX #define RUNNING_THREAD_MUTEX
@ -86,6 +86,13 @@
#define COND_SIGNALING #define COND_SIGNALING
#define CHECK_TASK_RESUMES #define CHECK_TASK_RESUMES
#endif #endif
#ifdef __linux__
#define COND_SIGNALING
// #define CHECK_TASK_RESUMES
#define RUNNING_THREAD_MUTEX
#define TICK_SIGNAL
#endif
/* Parameters to pass to the newly created pthread. */ /* Parameters to pass to the newly created pthread. */
typedef struct XPARAMS typedef struct XPARAMS
@ -385,7 +392,7 @@ portLONG lIndex;
struct sigaction sigtick; struct sigaction sigtick;
sigtick.sa_flags = 0; sigtick.sa_flags = 0;
sigtick.sa_handler = vPortSystemTickHandler; sigtick.sa_handler = vPortSystemTickHandler;
sigemptyset( &sigtick.sa_mask ); sigfillset( &sigtick.sa_mask );
assert ( 0 == sigaction( SIG_TICK, &sigtick, NULL ) ); assert ( 0 == sigaction( SIG_TICK, &sigtick, NULL ) );
/* Set-up the timer interrupt. */ /* Set-up the timer interrupt. */
@ -529,6 +536,7 @@ tskTCB * oldTask, * newTask;
pthread_sigmask( SIG_SETMASK, &xSignals, NULL); pthread_sigmask( SIG_SETMASK, &xSignals, NULL);
return; return;
} }
sched_yield();
retVal = pthread_mutex_trylock( &xSwappingThreadMutex ); retVal = pthread_mutex_trylock( &xSwappingThreadMutex );
} }

View File

@ -87,7 +87,7 @@
#define CHECK_TASK_RESUMES #define CHECK_TASK_RESUMES
#endif #endif
#ifdef __linux__ #ifdef __linux__
// #define COND_SIGNALING #define COND_SIGNALING
// #define CHECK_TASK_RESUMES // #define CHECK_TASK_RESUMES
#define RUNNING_THREAD_MUTEX #define RUNNING_THREAD_MUTEX
#define TICK_SIGNAL #define TICK_SIGNAL