Tim Exton-McGuinness
/
round-robin-rtos
Round robin Scheduler
rtos.c
- Committer:
- timexton
- Date:
- 2010-09-09
- Revision:
- 0:cf2d4c337b6f
File content as of revision 0:cf2d4c337b6f:
#include "globals.h" extern "C" int itask( unsigned int *, void (void) ); extern "C" int run_task( unsigned int *, unsigned int); extern "C" int sleep_task( unsigned int, unsigned int * ); extern "C" { //------------------------------ void install_task0( void task(void) ) { sp0 = itask( &taskstack0[255], task); } } //end of extern "C" //------------------------------ extern "C" { void install_task1( void task(void) ) { sp1 = itask( &taskstack1[255], task); } } //end of extern "C" //------------------------------ extern "C" { void install_task2(void task(void) ) { sp2 = itask( &taskstack2[255], task); } } //end of extern "C" //------------------------------ extern "C" { void install_task3( void task(void) ) { sp3 = itask( &taskstack3[255], task); } } //end of extern "C" //------------------------------ extern "C" { void install_task4( void task(void) ) { sp4 = itask( &taskstack4[255], task); } } //end of extern "C" //------------------------------ extern "C" { void install_task5( void task(void) ) { sp5 = itask( &taskstack5[255], task); } } //end of extern "C" //------------------------------ extern "C" { void run_task0( void ) { task_number = 0; run_task( &savesp, sp0 ); } } //end of extern "C" //------------------------------ extern "C" { void run_task1( void ) { task_number = 1; run_task( &savesp, sp1 ); } } //end of extern "C" //------------------------------ extern "C" { void run_task2( void ) { task_number = 2; run_task( &savesp, sp2 ); } } //end of extern "C" //------------------------------ extern "C" { void run_task3( void ) { task_number = 3; run_task( &savesp, sp3 ); } } //end of extern "C" //------------------------------ extern "C" { void run_task4( void ) { task_number = 4; run_task( &savesp, sp4 ); } } //end of extern "C" //------------------------------ extern "C" { void run_task5( void ) { task_number = 5; run_task( &savesp, sp5 ); } } //end of extern "C" //------------------------------ extern "C" { void sleep( void ) { switch( task_number ) { case 0: sleep_task( savesp, &sp0 ); break; case 1: sleep_task( savesp, &sp1 ); break; case 2: sleep_task( savesp, &sp2 ); break; case 3: sleep_task( savesp, &sp3 ); break; case 4: sleep_task( savesp, &sp4 ); break; case 5: sleep_task( savesp, &sp5 ); break; } } } //end of extern "C" //------------------------------