Added vPortCheckCorrectThreadIsRunning() function to the Win32 port layer to trap when Windows is not running the correct thread and try and catch it.

This commit is contained in:
Richard Barry 2010-11-21 11:34:12 +00:00
parent 1ae93fbb63
commit 2fc309624b

View File

@ -532,4 +532,19 @@ long lMutexNeedsReleasing;
ReleaseMutex( pvInterruptEventMutex );
}
}
/*-----------------------------------------------------------*/
void vPortCheckCorrectThreadIsRunning( void )
{
xThreadState *pxThreadState = ( xThreadState * ) *( ( unsigned long * ) pxCurrentTCB );
/* When switching threads, Windows does not always seem to run the selected
thread immediately. This function can be called to check if the thread
that is currently running is the thread that is responsible for executing
the task selected by the real time scheduler. */
if( GetCurrentThread() != pxThreadState->pvThread )
{
SwitchToThread();
}
}