Tim Exton-McGuinness
/
round-robin-rtos
Round robin Scheduler
rtos.c@0:cf2d4c337b6f, 2010-09-09 (annotated)
- Committer:
- timexton
- Date:
- Thu Sep 09 14:09:14 2010 +0000
- Revision:
- 0:cf2d4c337b6f
Who changed what in which revision?
User | Revision | Line number | New 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 |