Update to allow use with the cooperative scheduler.

This commit is contained in:
Richard Barry 2008-01-27 20:25:36 +00:00
parent 2ee98beba2
commit e018422743
5 changed files with 50 additions and 2 deletions

View file

@ -251,6 +251,10 @@ unsigned portBASE_TYPE uxOurPriority;
vTaskPrioritySet( NULL, uxOurPriority + 1 );
( *pulCounter )++;
vTaskPrioritySet( NULL, uxOurPriority );
#if configUSE_PREEMPTION == 0
taskYIELD();
#endif
}
}
/*-----------------------------------------------------------*/
@ -342,6 +346,10 @@ const portCHAR * const pcTaskFailMsg = "Priority manipulation Task Failed\r\n";
portEXIT_CRITICAL();
}
#if configUSE_PREEMPTION == 0
taskYIELD();
#endif
/* Resume the continuous count task and do it all again. */
vTaskResume( xContinuousIncrementHandle );
}
@ -421,6 +429,10 @@ portBASE_TYPE xGotValue;
}
xTaskResumeAll();
#if configUSE_PREEMPTION == 0
taskYIELD();
#endif
} while( xGotValue == pdFALSE );
if( ulReceivedValue != ulExpectedValue )

View file

@ -241,7 +241,9 @@ portBASE_TYPE xDummy = 0;
xTaskResumeAll();
prvCheckTaskCounters( evtLOWEST_PRIORITY_INDEX, 1 );
#if configUSE_PREEMPTION == 0
taskYIELD();
#endif
/* Do the same basic test another few times - selectively suspending
and resuming tasks and each time calling prvCheckTaskCounters() passing
@ -267,7 +269,9 @@ portBASE_TYPE xDummy = 0;
prvCheckTaskCounters( evtHIGHEST_PRIORITY_INDEX_1, 1 );
#if configUSE_PREEMPTION == 0
taskYIELD();
#endif
/* Now a slight change, first suspend all tasks. */
@ -311,6 +315,10 @@ portBASE_TYPE xDummy = 0;
}
xTaskResumeAll();
#if configUSE_PREEMPTION == 0
taskYIELD();
#endif
/* We should have been preempted by resuming the scheduler - so by the
time we are running again we expect the high priority task to have
removed three items from the queue. */

View file

@ -157,6 +157,12 @@ portTickType xTimeToBlock, xBlockedTime;
}
}
#if configUSE_PREEMPTION == 0
taskYIELD();
#endif
/*********************************************************************
Test 2
@ -208,6 +214,10 @@ portTickType xTimeToBlock, xBlockedTime;
}
}
#if configUSE_PREEMPTION == 0
taskYIELD();
#endif
/*********************************************************************
Test 3
@ -283,6 +293,9 @@ portTickType xTimeToBlock, xBlockedTime;
vTaskDelay( bktSHORT_WAIT );
xRunIndicator = 0;
#if configUSE_PREEMPTION == 0
taskYIELD();
#endif
/*********************************************************************
Test 4

View file

@ -146,6 +146,10 @@ portTickType xTimeToBlock, xBlockedTime;
}
}
#if configUSE_PREEMPTION == 0
taskYIELD();
#endif
/*********************************************************************
Test 2
@ -197,6 +201,9 @@ portTickType xTimeToBlock, xBlockedTime;
}
}
#if configUSE_PREEMPTION == 0
taskYIELD();
#endif
/*********************************************************************
Test 3

View file

@ -159,6 +159,10 @@ unsigned portBASE_TYPE ux;
( *puxLoopCounter )++;
}
#if configUSE_PREEMPTION == 0
taskYIELD();
#endif
/* If the semaphore count is zero then we should not be able to 'take'
the semaphore. */
if( xSemaphoreTake( xSemaphore, countDONT_BLOCK ) == pdPASS )
@ -191,6 +195,10 @@ unsigned portBASE_TYPE ux;
( *puxLoopCounter )++;
}
#if configUSE_PREEMPTION == 0
taskYIELD();
#endif
/* If the semaphore count is at its maximum then we should not be able to
'give' the semaphore. */
if( xSemaphoreGive( xSemaphore ) == pdPASS )