mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-20 05:21:59 -04:00
Added in the 'death' tasks to the MingW Win32 demo.
This commit is contained in:
parent
853250260c
commit
f3dbcaf725
|
@ -43,6 +43,7 @@ IF EXIST FreeRTOS Goto END
|
|||
copy ..\Common\include\QPeek.h DemoTasks\include
|
||||
copy ..\Common\include\flop.h DemoTasks\include
|
||||
copy ..\Common\include\recmutex.h DemoTasks\include
|
||||
copy ..\Common\include\death.h DemoTasks\include
|
||||
copy ..\Common\Minimal\BlockQ.c DemoTasks
|
||||
copy ..\Common\Minimal\integer.c DemoTasks
|
||||
copy ..\Common\Minimal\semtest.c DemoTasks
|
||||
|
@ -50,5 +51,6 @@ IF EXIST FreeRTOS Goto END
|
|||
copy ..\Common\Minimal\GenQTest.c DemoTasks
|
||||
copy ..\Common\Minimal\QPeek.c DemoTasks
|
||||
copy ..\Common\Minimal\flop.c DemoTasks
|
||||
copy ..\Common\Minimal\death.c DemoTasks
|
||||
|
||||
: END
|
|
@ -56,12 +56,7 @@
|
|||
* -NOTE- The Win32 port is a simulation (or is that emulation?) only! Do not
|
||||
* expect to get real time behaviour from the Win32 port or this demo
|
||||
* application. It is provided as a convenient development and demonstration
|
||||
* test bed only. Also, at the time of writing, a method of deleting theads
|
||||
* has not been implemented, although doing so would be trivial so this
|
||||
* functionality might be added in at a later date. At present, calling
|
||||
* vTaskDelete() will delete the real time task from FreeRTOS but not the Win32
|
||||
* thread in which the task was executing. DO NOT CALL vTaskDelete() when using
|
||||
* the Win32 port! This was tested using Windows XP on a dual core laptop.
|
||||
* test bed only. This was tested using Windows XP on a dual core laptop.
|
||||
*
|
||||
* - READ THE WEB DOCUMENTATION FOR THIS PORT FOR MORE INFORMATION ON USING IT -
|
||||
*******************************************************************************
|
||||
|
@ -101,6 +96,7 @@
|
|||
#include "QPeek.h"
|
||||
#include "recmutex.h"
|
||||
#include "flop.h"
|
||||
#include "death.h"
|
||||
|
||||
/* Priorities at which the tasks are created. */
|
||||
#define mainCHECK_TASK_PRIORITY ( configMAX_PRIORITIES - 1 )
|
||||
|
@ -134,6 +130,11 @@ int main( void )
|
|||
vStartMathTasks( mainFLOP_TASK_PRIORITY );
|
||||
vStartRecursiveMutexTasks();
|
||||
|
||||
/* The suicide tasks must be created last as they need to know how many
|
||||
tasks were running prior to their creation in order to ascertain whether
|
||||
or not the correct/expected number of tasks are running at any given time. */
|
||||
vCreateSuicidalTasks( mainCREATOR_TASK_PRIORITY );
|
||||
|
||||
/* Start the scheduler itself. */
|
||||
vTaskStartScheduler();
|
||||
|
||||
|
@ -189,6 +190,10 @@ char *pcStatusMessage = "OK";
|
|||
{
|
||||
pcStatusMessage = "Error: Flop";
|
||||
}
|
||||
else if( xIsCreateTaskStillRunning() != pdPASS )
|
||||
{
|
||||
pcStatusMessage = "Error: Create";
|
||||
}
|
||||
else if( xAreRecursiveMutexTasksStillRunning() != pdTRUE )
|
||||
{
|
||||
pcStatusMessage = "Error: RecMutex";
|
||||
|
@ -204,19 +209,11 @@ char *pcStatusMessage = "OK";
|
|||
|
||||
void vApplicationIdleHook( void )
|
||||
{
|
||||
/* Sleep to reduce CPU load, but don't sleep indefinitely if not using
|
||||
preemption as as nothing will cause a task switch. */
|
||||
#if( configUSE_PREEMPTION != 0 )
|
||||
{
|
||||
SleepEx( INFINITE, TRUE );
|
||||
}
|
||||
#else
|
||||
{
|
||||
const unsigned long ulMSToSleep = 5;
|
||||
const unsigned long ulMSToSleep = 5;
|
||||
|
||||
SleepEx( ulMSToSleep, TRUE );
|
||||
}
|
||||
#endif
|
||||
/* Sleep to reduce CPU load, but don't sleep indefinitely in case there are
|
||||
tasks waiting to be terminated by the idle task. */
|
||||
Sleep( ulMSToSleep );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
|
|
Loading…
Reference in a new issue