|
|
@ -51,6 +51,10 @@
|
|
|
|
*----------------------------------------------------------*/
|
|
|
|
*----------------------------------------------------------*/
|
|
|
|
#include "portmacro.h"
|
|
|
|
#include "portmacro.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef __linux__
|
|
|
|
|
|
|
|
#define __USE_GNU
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#include <errno.h>
|
|
|
|
#include <errno.h>
|
|
|
|
#include <pthread.h>
|
|
|
|
#include <pthread.h>
|
|
|
|
#include <signal.h>
|
|
|
|
#include <signal.h>
|
|
|
@ -134,6 +138,16 @@ void prvFatalError( const char * pcCall,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/*-----------------------------------------------------------*/
|
|
|
|
/*-----------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void prvPortSetCurrentThreadName(char * pxThreadName)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
#ifdef __APPLE__
|
|
|
|
|
|
|
|
pthread_setname_np(pxThreadName);
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
pthread_setname_np(pthread_self(), pxThreadName);
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/*-----------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|
* See header file for description.
|
|
|
|
* See header file for description.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
@ -224,6 +238,7 @@ BaseType_t xPortStartScheduler( void )
|
|
|
|
const ListItem_t * pxEndMarker;
|
|
|
|
const ListItem_t * pxEndMarker;
|
|
|
|
|
|
|
|
|
|
|
|
hMainThread = pthread_self();
|
|
|
|
hMainThread = pthread_self();
|
|
|
|
|
|
|
|
prvPortSetCurrentThreadName("Scheduler");
|
|
|
|
|
|
|
|
|
|
|
|
/* Start the timer that generates the tick ISR(SIGALRM).
|
|
|
|
/* Start the timer that generates the tick ISR(SIGALRM).
|
|
|
|
* Interrupts are disabled here already. */
|
|
|
|
* Interrupts are disabled here already. */
|
|
|
@ -383,6 +398,8 @@ static void * prvTimerTickHandler( void * arg )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
( void ) arg;
|
|
|
|
( void ) arg;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
prvPortSetCurrentThreadName("Scheduler timer");
|
|
|
|
|
|
|
|
|
|
|
|
while( xTimerTickThreadShouldRun )
|
|
|
|
while( xTimerTickThreadShouldRun )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
/*
|
|
|
|
/*
|
|
|
@ -493,6 +510,9 @@ static void * prvWaitForStart( void * pvParams )
|
|
|
|
uxCriticalNesting = 0;
|
|
|
|
uxCriticalNesting = 0;
|
|
|
|
vPortEnableInterrupts();
|
|
|
|
vPortEnableInterrupts();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Set thread name */
|
|
|
|
|
|
|
|
prvPortSetCurrentThreadName(pcTaskGetName(xTaskGetCurrentTaskHandle()));
|
|
|
|
|
|
|
|
|
|
|
|
/* Call the task's entry point. */
|
|
|
|
/* Call the task's entry point. */
|
|
|
|
pxThread->pxCode( pxThread->pvParams );
|
|
|
|
pxThread->pxCode( pxThread->pvParams );
|
|
|
|
|
|
|
|
|
|
|
|