From c97c1fedcb5938a6c9f10b9f3bc8b604885bd6d1 Mon Sep 17 00:00:00 2001 From: richardbarry Date: Thu, 14 Aug 2008 11:10:46 +0000 Subject: [PATCH] Permit no more than two simultaneous occurrences of interrupts adding everything to queues instead of tasks. git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@456 1d2547de-c912-0410-9cb9-b8ca96c0e9e2 --- Demo/Common/Minimal/IntQueue.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/Demo/Common/Minimal/IntQueue.c b/Demo/Common/Minimal/IntQueue.c index 8cc17bc06..2d010d015 100644 --- a/Demo/Common/Minimal/IntQueue.c +++ b/Demo/Common/Minimal/IntQueue.c @@ -274,7 +274,7 @@ static void prvQueueAccessLogError( unsigned portBASE_TYPE uxLine ) static void prvHigherPriorityNormallyEmptyTask( void *pvParameters ) { -unsigned portBASE_TYPE uxRxed, ux, uxTask1, uxTask2; +unsigned portBASE_TYPE uxRxed, ux, uxTask1, uxTask2, uxErrorCount1 = 0, uxErrorCount2 = 0; /* The timer should not be started until after the scheduler has started. More than one task is running this code so we check the parameter value @@ -339,13 +339,29 @@ unsigned portBASE_TYPE uxRxed, ux, uxTask1, uxTask2; if( uxTask1 < intqMIN_ACCEPTABLE_TASK_COUNT ) { /* Only task 2 seemed to log any values. */ - prvQueueAccessLogError( __LINE__ ); + uxErrorCount1++; + if( uxErrorCount1 > 2 ) + { + prvQueueAccessLogError( __LINE__ ); + } + } + else + { + uxErrorCount1 = 0; } if( uxTask2 < intqMIN_ACCEPTABLE_TASK_COUNT ) { /* Only task 1 seemed to log any values. */ - prvQueueAccessLogError( __LINE__ ); + uxErrorCount2++; + if( uxErrorCount2 > 2 ) + { + prvQueueAccessLogError( __LINE__ ); + } + } + else + { + uxErrorCount2 = 0; } /* Clear the array again, ready to start a new cycle. */ -- 2.39.5