Search Code
About round-robin-rtos

Published 09 Sep 2010.

Last change message: N/A

Import this program

round-robin-rtos

Published 09 Sep 2010, by   user Tim Exton-McGuinness   tag No tags
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers rtos.c Source File

rtos.c

00001 #include "globals.h"
00002 
00003 extern "C" int itask( unsigned int *, void (void) );
00004 extern "C" int run_task( unsigned int *, unsigned int);
00005 extern "C" int sleep_task( unsigned int, unsigned int * );
00006 
00007 extern "C" {
00008 //------------------------------
00009 void install_task0( void task(void) )
00010  {
00011   sp0 = itask( &taskstack0[255], task);
00012  }
00013 }   //end of extern "C"
00014 
00015 //------------------------------
00016 extern "C" {
00017 void install_task1( void task(void) )
00018 {
00019  sp1 = itask( &taskstack1[255], task);
00020 }
00021 }   //end of extern "C"
00022 
00023 //------------------------------
00024 extern "C" {
00025 void install_task2(void task(void) )
00026 {
00027  sp2 = itask( &taskstack2[255], task);
00028 }
00029 }   //end of extern "C"
00030 
00031 //------------------------------
00032 extern "C" {
00033 void install_task3( void task(void) )
00034 {
00035  sp3 = itask( &taskstack3[255], task);
00036 }
00037 }   //end of extern "C"
00038 
00039 //------------------------------
00040 extern "C" {
00041 void install_task4( void task(void) )
00042 {
00043  sp4 = itask( &taskstack4[255], task);
00044 }
00045 }   //end of extern "C"
00046 
00047 //------------------------------
00048 extern "C" {
00049 void install_task5( void task(void) )
00050 {
00051  sp5 = itask( &taskstack5[255], task);
00052 }
00053 }   //end of extern "C"
00054 
00055 //------------------------------
00056 extern "C" {
00057 void run_task0( void )
00058 {
00059  task_number = 0; 
00060  run_task( &savesp, sp0 );
00061 }
00062 }   //end of extern "C"
00063 
00064 //------------------------------
00065 extern "C" {
00066 void run_task1( void )
00067 {
00068  task_number = 1;
00069  run_task( &savesp, sp1 );
00070 }
00071 }   //end of extern "C"
00072 
00073 //------------------------------
00074 extern "C" {
00075 void run_task2( void )
00076 {
00077  task_number = 2;
00078  run_task( &savesp, sp2 );
00079 }
00080 }   //end of extern "C"
00081 
00082 //------------------------------
00083 extern "C" {
00084 void run_task3( void )
00085 {
00086  task_number = 3;
00087  run_task( &savesp, sp3 );
00088 }
00089 }   //end of extern "C"
00090 
00091 //------------------------------
00092 extern "C" {
00093 void run_task4( void )
00094 {
00095  task_number = 4;
00096  run_task( &savesp, sp4 );
00097 }
00098 }   //end of extern "C"
00099 
00100 //------------------------------
00101 extern "C" {
00102 void run_task5( void )
00103 {
00104  task_number = 5;
00105  run_task( &savesp, sp5 );
00106 }
00107 }   //end of extern "C"
00108 
00109 //------------------------------
00110 extern "C" {
00111 void sleep( void ) {
00112  switch( task_number )
00113   {
00114    case 0:
00115     sleep_task( savesp, &sp0 );
00116     break;
00117    
00118    case 1:
00119     sleep_task( savesp, &sp1 );
00120     break;
00121    
00122    case 2:
00123     sleep_task( savesp, &sp2 );
00124     break;
00125    
00126    case 3:
00127     sleep_task( savesp, &sp3 );
00128     break;
00129     
00130    case 4:
00131     sleep_task( savesp, &sp4 );
00132     break;
00133     
00134    case 5:
00135     sleep_task( savesp, &sp5 );
00136     break;
00137   }
00138 }
00139 }   //end of extern "C"
00140 //------------------------------
00141