Round robin Scheduler

Dependencies:   mbed

Committer:
timexton
Date:
Thu Sep 09 14:09:14 2010 +0000
Revision:
0:cf2d4c337b6f

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
timexton 0:cf2d4c337b6f 1 #include "globals.h"
timexton 0:cf2d4c337b6f 2
timexton 0:cf2d4c337b6f 3 extern "C" int itask( unsigned int *, void (void) );
timexton 0:cf2d4c337b6f 4 extern "C" int run_task( unsigned int *, unsigned int);
timexton 0:cf2d4c337b6f 5 extern "C" int sleep_task( unsigned int, unsigned int * );
timexton 0:cf2d4c337b6f 6
timexton 0:cf2d4c337b6f 7 extern "C" {
timexton 0:cf2d4c337b6f 8 //------------------------------
timexton 0:cf2d4c337b6f 9 void install_task0( void task(void) )
timexton 0:cf2d4c337b6f 10 {
timexton 0:cf2d4c337b6f 11 sp0 = itask( &taskstack0[255], task);
timexton 0:cf2d4c337b6f 12 }
timexton 0:cf2d4c337b6f 13 } //end of extern "C"
timexton 0:cf2d4c337b6f 14
timexton 0:cf2d4c337b6f 15 //------------------------------
timexton 0:cf2d4c337b6f 16 extern "C" {
timexton 0:cf2d4c337b6f 17 void install_task1( void task(void) )
timexton 0:cf2d4c337b6f 18 {
timexton 0:cf2d4c337b6f 19 sp1 = itask( &taskstack1[255], task);
timexton 0:cf2d4c337b6f 20 }
timexton 0:cf2d4c337b6f 21 } //end of extern "C"
timexton 0:cf2d4c337b6f 22
timexton 0:cf2d4c337b6f 23 //------------------------------
timexton 0:cf2d4c337b6f 24 extern "C" {
timexton 0:cf2d4c337b6f 25 void install_task2(void task(void) )
timexton 0:cf2d4c337b6f 26 {
timexton 0:cf2d4c337b6f 27 sp2 = itask( &taskstack2[255], task);
timexton 0:cf2d4c337b6f 28 }
timexton 0:cf2d4c337b6f 29 } //end of extern "C"
timexton 0:cf2d4c337b6f 30
timexton 0:cf2d4c337b6f 31 //------------------------------
timexton 0:cf2d4c337b6f 32 extern "C" {
timexton 0:cf2d4c337b6f 33 void install_task3( void task(void) )
timexton 0:cf2d4c337b6f 34 {
timexton 0:cf2d4c337b6f 35 sp3 = itask( &taskstack3[255], task);
timexton 0:cf2d4c337b6f 36 }
timexton 0:cf2d4c337b6f 37 } //end of extern "C"
timexton 0:cf2d4c337b6f 38
timexton 0:cf2d4c337b6f 39 //------------------------------
timexton 0:cf2d4c337b6f 40 extern "C" {
timexton 0:cf2d4c337b6f 41 void install_task4( void task(void) )
timexton 0:cf2d4c337b6f 42 {
timexton 0:cf2d4c337b6f 43 sp4 = itask( &taskstack4[255], task);
timexton 0:cf2d4c337b6f 44 }
timexton 0:cf2d4c337b6f 45 } //end of extern "C"
timexton 0:cf2d4c337b6f 46
timexton 0:cf2d4c337b6f 47 //------------------------------
timexton 0:cf2d4c337b6f 48 extern "C" {
timexton 0:cf2d4c337b6f 49 void install_task5( void task(void) )
timexton 0:cf2d4c337b6f 50 {
timexton 0:cf2d4c337b6f 51 sp5 = itask( &taskstack5[255], task);
timexton 0:cf2d4c337b6f 52 }
timexton 0:cf2d4c337b6f 53 } //end of extern "C"
timexton 0:cf2d4c337b6f 54
timexton 0:cf2d4c337b6f 55 //------------------------------
timexton 0:cf2d4c337b6f 56 extern "C" {
timexton 0:cf2d4c337b6f 57 void run_task0( void )
timexton 0:cf2d4c337b6f 58 {
timexton 0:cf2d4c337b6f 59 task_number = 0;
timexton 0:cf2d4c337b6f 60 run_task( &savesp, sp0 );
timexton 0:cf2d4c337b6f 61 }
timexton 0:cf2d4c337b6f 62 } //end of extern "C"
timexton 0:cf2d4c337b6f 63
timexton 0:cf2d4c337b6f 64 //------------------------------
timexton 0:cf2d4c337b6f 65 extern "C" {
timexton 0:cf2d4c337b6f 66 void run_task1( void )
timexton 0:cf2d4c337b6f 67 {
timexton 0:cf2d4c337b6f 68 task_number = 1;
timexton 0:cf2d4c337b6f 69 run_task( &savesp, sp1 );
timexton 0:cf2d4c337b6f 70 }
timexton 0:cf2d4c337b6f 71 } //end of extern "C"
timexton 0:cf2d4c337b6f 72
timexton 0:cf2d4c337b6f 73 //------------------------------
timexton 0:cf2d4c337b6f 74 extern "C" {
timexton 0:cf2d4c337b6f 75 void run_task2( void )
timexton 0:cf2d4c337b6f 76 {
timexton 0:cf2d4c337b6f 77 task_number = 2;
timexton 0:cf2d4c337b6f 78 run_task( &savesp, sp2 );
timexton 0:cf2d4c337b6f 79 }
timexton 0:cf2d4c337b6f 80 } //end of extern "C"
timexton 0:cf2d4c337b6f 81
timexton 0:cf2d4c337b6f 82 //------------------------------
timexton 0:cf2d4c337b6f 83 extern "C" {
timexton 0:cf2d4c337b6f 84 void run_task3( void )
timexton 0:cf2d4c337b6f 85 {
timexton 0:cf2d4c337b6f 86 task_number = 3;
timexton 0:cf2d4c337b6f 87 run_task( &savesp, sp3 );
timexton 0:cf2d4c337b6f 88 }
timexton 0:cf2d4c337b6f 89 } //end of extern "C"
timexton 0:cf2d4c337b6f 90
timexton 0:cf2d4c337b6f 91 //------------------------------
timexton 0:cf2d4c337b6f 92 extern "C" {
timexton 0:cf2d4c337b6f 93 void run_task4( void )
timexton 0:cf2d4c337b6f 94 {
timexton 0:cf2d4c337b6f 95 task_number = 4;
timexton 0:cf2d4c337b6f 96 run_task( &savesp, sp4 );
timexton 0:cf2d4c337b6f 97 }
timexton 0:cf2d4c337b6f 98 } //end of extern "C"
timexton 0:cf2d4c337b6f 99
timexton 0:cf2d4c337b6f 100 //------------------------------
timexton 0:cf2d4c337b6f 101 extern "C" {
timexton 0:cf2d4c337b6f 102 void run_task5( void )
timexton 0:cf2d4c337b6f 103 {
timexton 0:cf2d4c337b6f 104 task_number = 5;
timexton 0:cf2d4c337b6f 105 run_task( &savesp, sp5 );
timexton 0:cf2d4c337b6f 106 }
timexton 0:cf2d4c337b6f 107 } //end of extern "C"
timexton 0:cf2d4c337b6f 108
timexton 0:cf2d4c337b6f 109 //------------------------------
timexton 0:cf2d4c337b6f 110 extern "C" {
timexton 0:cf2d4c337b6f 111 void sleep( void ) {
timexton 0:cf2d4c337b6f 112 switch( task_number )
timexton 0:cf2d4c337b6f 113 {
timexton 0:cf2d4c337b6f 114 case 0:
timexton 0:cf2d4c337b6f 115 sleep_task( savesp, &sp0 );
timexton 0:cf2d4c337b6f 116 break;
timexton 0:cf2d4c337b6f 117
timexton 0:cf2d4c337b6f 118 case 1:
timexton 0:cf2d4c337b6f 119 sleep_task( savesp, &sp1 );
timexton 0:cf2d4c337b6f 120 break;
timexton 0:cf2d4c337b6f 121
timexton 0:cf2d4c337b6f 122 case 2:
timexton 0:cf2d4c337b6f 123 sleep_task( savesp, &sp2 );
timexton 0:cf2d4c337b6f 124 break;
timexton 0:cf2d4c337b6f 125
timexton 0:cf2d4c337b6f 126 case 3:
timexton 0:cf2d4c337b6f 127 sleep_task( savesp, &sp3 );
timexton 0:cf2d4c337b6f 128 break;
timexton 0:cf2d4c337b6f 129
timexton 0:cf2d4c337b6f 130 case 4:
timexton 0:cf2d4c337b6f 131 sleep_task( savesp, &sp4 );
timexton 0:cf2d4c337b6f 132 break;
timexton 0:cf2d4c337b6f 133
timexton 0:cf2d4c337b6f 134 case 5:
timexton 0:cf2d4c337b6f 135 sleep_task( savesp, &sp5 );
timexton 0:cf2d4c337b6f 136 break;
timexton 0:cf2d4c337b6f 137 }
timexton 0:cf2d4c337b6f 138 }
timexton 0:cf2d4c337b6f 139 } //end of extern "C"
timexton 0:cf2d4c337b6f 140 //------------------------------
timexton 0:cf2d4c337b6f 141