From 58a700b8f779e9fb84ef930104fc4f691257d8c7 Mon Sep 17 00:00:00 2001 From: Richard Barry Date: Mon, 14 Feb 2011 13:49:50 +0000 Subject: [PATCH] WIN32 simulator port: Allow the configTICK_RATE_HZ to be increased without making the sleep time in the simulated timer peripheral too small. --- Source/portable/MSVC-MingW/port.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Source/portable/MSVC-MingW/port.c b/Source/portable/MSVC-MingW/port.c index 619fb338b..c50383f99 100644 --- a/Source/portable/MSVC-MingW/port.c +++ b/Source/portable/MSVC-MingW/port.c @@ -129,6 +129,8 @@ extern void *pxCurrentTCB; static DWORD WINAPI prvSimulatedPeripheralTimer( LPVOID lpParameter ) { +portTickType xMinimumWindowsBlockTime = ( portTickType ) 20; + /* Just to prevent compiler warnings. */ ( void ) lpParameter; @@ -140,8 +142,15 @@ static DWORD WINAPI prvSimulatedPeripheralTimer( LPVOID lpParameter ) time, not the time that Sleep() is called. It is done this way to prevent overruns in this very non real time simulated/emulated environment. */ - Sleep( portTICK_RATE_MS ); - + if( portTICK_RATE_MS < xMinimumWindowsBlockTime ) + { + Sleep( xMinimumWindowsBlockTime ); + } + else + { + Sleep( portTICK_RATE_MS ); + } + WaitForSingleObject( pvInterruptEventMutex, INFINITE ); /* The timer has expired, generate the simulated tick event. */