Versie 0.2 Het versturen via de NRF werkt nog niet helemaal omdat er per 4 bytes verstuurd moet worden. Wordt gefixt d.m.v. dynamic stuff!

Dependencies:   BufferedSerial

Dependents:   rtos_basic rtos_basic

Fork of mbed-rtos by mbed official

Committer:
mbed_official
Date:
Thu Nov 06 13:00:11 2014 +0000
Revision:
49:77c8e4604045
Parent:
rtx_ca/rt_System.c@48:e9a2c7cb57a4
Child:
68:d3d0e710b443
Synchronized with git revision 7b90c2ba137baaf9769219e0e8a7b8e8d1299c4f

Full URL: https://github.com/mbedmicro/mbed/commit/7b90c2ba137baaf9769219e0e8a7b8e8d1299c4f/

This target is not yet tested, so it can't be released as part of the official
SDK build for now.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 48:e9a2c7cb57a4 1 /*----------------------------------------------------------------------------
mbed_official 48:e9a2c7cb57a4 2 * RL-ARM - RTX
mbed_official 48:e9a2c7cb57a4 3 *----------------------------------------------------------------------------
mbed_official 48:e9a2c7cb57a4 4 * Name: RT_SYSTEM.C
mbed_official 48:e9a2c7cb57a4 5 * Purpose: System Task Manager
mbed_official 48:e9a2c7cb57a4 6 * Rev.: V4.60
mbed_official 48:e9a2c7cb57a4 7 *----------------------------------------------------------------------------
mbed_official 48:e9a2c7cb57a4 8 *
mbed_official 48:e9a2c7cb57a4 9 * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
mbed_official 48:e9a2c7cb57a4 10 * All rights reserved.
mbed_official 48:e9a2c7cb57a4 11 * Redistribution and use in source and binary forms, with or without
mbed_official 48:e9a2c7cb57a4 12 * modification, are permitted provided that the following conditions are met:
mbed_official 48:e9a2c7cb57a4 13 * - Redistributions of source code must retain the above copyright
mbed_official 48:e9a2c7cb57a4 14 * notice, this list of conditions and the following disclaimer.
mbed_official 48:e9a2c7cb57a4 15 * - Redistributions in binary form must reproduce the above copyright
mbed_official 48:e9a2c7cb57a4 16 * notice, this list of conditions and the following disclaimer in the
mbed_official 48:e9a2c7cb57a4 17 * documentation and/or other materials provided with the distribution.
mbed_official 48:e9a2c7cb57a4 18 * - Neither the name of ARM nor the names of its contributors may be used
mbed_official 48:e9a2c7cb57a4 19 * to endorse or promote products derived from this software without
mbed_official 48:e9a2c7cb57a4 20 * specific prior written permission.
mbed_official 48:e9a2c7cb57a4 21 *
mbed_official 48:e9a2c7cb57a4 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 48:e9a2c7cb57a4 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 48:e9a2c7cb57a4 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
mbed_official 48:e9a2c7cb57a4 25 * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
mbed_official 48:e9a2c7cb57a4 26 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
mbed_official 48:e9a2c7cb57a4 27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
mbed_official 48:e9a2c7cb57a4 28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
mbed_official 48:e9a2c7cb57a4 29 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
mbed_official 48:e9a2c7cb57a4 30 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
mbed_official 48:e9a2c7cb57a4 31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
mbed_official 48:e9a2c7cb57a4 32 * POSSIBILITY OF SUCH DAMAGE.
mbed_official 48:e9a2c7cb57a4 33 *---------------------------------------------------------------------------*/
mbed_official 48:e9a2c7cb57a4 34
mbed_official 48:e9a2c7cb57a4 35 #include "rt_TypeDef.h"
mbed_official 48:e9a2c7cb57a4 36 #include "RTX_Config.h"
mbed_official 48:e9a2c7cb57a4 37 #include "rt_Task.h"
mbed_official 48:e9a2c7cb57a4 38 #include "rt_System.h"
mbed_official 48:e9a2c7cb57a4 39 #include "rt_Event.h"
mbed_official 48:e9a2c7cb57a4 40 #include "rt_List.h"
mbed_official 48:e9a2c7cb57a4 41 #include "rt_Mailbox.h"
mbed_official 48:e9a2c7cb57a4 42 #include "rt_Semaphore.h"
mbed_official 48:e9a2c7cb57a4 43 #include "rt_Time.h"
mbed_official 48:e9a2c7cb57a4 44 #include "rt_Timer.h"
mbed_official 48:e9a2c7cb57a4 45 #include "rt_Robin.h"
mbed_official 48:e9a2c7cb57a4 46 #ifdef __CORTEX_A9
mbed_official 48:e9a2c7cb57a4 47 #include "rt_HAL_CA.h"
mbed_official 48:e9a2c7cb57a4 48 #else
mbed_official 48:e9a2c7cb57a4 49 #include "rt_HAL_CM.h"
mbed_official 48:e9a2c7cb57a4 50 #endif
mbed_official 48:e9a2c7cb57a4 51
mbed_official 48:e9a2c7cb57a4 52 /*----------------------------------------------------------------------------
mbed_official 48:e9a2c7cb57a4 53 * Global Variables
mbed_official 48:e9a2c7cb57a4 54 *---------------------------------------------------------------------------*/
mbed_official 48:e9a2c7cb57a4 55
mbed_official 48:e9a2c7cb57a4 56 int os_tick_irqn;
mbed_official 48:e9a2c7cb57a4 57
mbed_official 48:e9a2c7cb57a4 58 /*----------------------------------------------------------------------------
mbed_official 48:e9a2c7cb57a4 59 * Local Variables
mbed_official 48:e9a2c7cb57a4 60 *---------------------------------------------------------------------------*/
mbed_official 48:e9a2c7cb57a4 61
mbed_official 48:e9a2c7cb57a4 62 static volatile BIT os_lock;
mbed_official 48:e9a2c7cb57a4 63 static volatile BIT os_psh_flag;
mbed_official 48:e9a2c7cb57a4 64 #ifndef __CORTEX_A9
mbed_official 48:e9a2c7cb57a4 65 static U8 pend_flags;
mbed_official 48:e9a2c7cb57a4 66 #endif
mbed_official 48:e9a2c7cb57a4 67 /*----------------------------------------------------------------------------
mbed_official 48:e9a2c7cb57a4 68 * Global Functions
mbed_official 48:e9a2c7cb57a4 69 *---------------------------------------------------------------------------*/
mbed_official 48:e9a2c7cb57a4 70
mbed_official 48:e9a2c7cb57a4 71 #if defined (__CC_ARM)
mbed_official 48:e9a2c7cb57a4 72 __asm void $$RTX$$version (void) {
mbed_official 48:e9a2c7cb57a4 73 /* Export a version number symbol for a version control. */
mbed_official 48:e9a2c7cb57a4 74
mbed_official 48:e9a2c7cb57a4 75 EXPORT __RL_RTX_VER
mbed_official 48:e9a2c7cb57a4 76
mbed_official 48:e9a2c7cb57a4 77 __RL_RTX_VER EQU 0x450
mbed_official 48:e9a2c7cb57a4 78 }
mbed_official 48:e9a2c7cb57a4 79 #endif
mbed_official 48:e9a2c7cb57a4 80
mbed_official 48:e9a2c7cb57a4 81
mbed_official 48:e9a2c7cb57a4 82 /*--------------------------- rt_suspend ------------------------------------*/
mbed_official 48:e9a2c7cb57a4 83
mbed_official 48:e9a2c7cb57a4 84 U32 rt_suspend (void) {
mbed_official 48:e9a2c7cb57a4 85 /* Suspend OS scheduler */
mbed_official 48:e9a2c7cb57a4 86 U32 delta = 0xFFFF;
mbed_official 48:e9a2c7cb57a4 87
mbed_official 48:e9a2c7cb57a4 88 rt_tsk_lock();
mbed_official 48:e9a2c7cb57a4 89
mbed_official 48:e9a2c7cb57a4 90 if (os_dly.p_dlnk) {
mbed_official 48:e9a2c7cb57a4 91 delta = os_dly.delta_time;
mbed_official 48:e9a2c7cb57a4 92 }
mbed_official 48:e9a2c7cb57a4 93 #ifndef __CMSIS_RTOS
mbed_official 48:e9a2c7cb57a4 94 if (os_tmr.next) {
mbed_official 48:e9a2c7cb57a4 95 if (os_tmr.tcnt < delta) delta = os_tmr.tcnt;
mbed_official 48:e9a2c7cb57a4 96 }
mbed_official 48:e9a2c7cb57a4 97 #endif
mbed_official 48:e9a2c7cb57a4 98
mbed_official 48:e9a2c7cb57a4 99 return (delta);
mbed_official 48:e9a2c7cb57a4 100 }
mbed_official 48:e9a2c7cb57a4 101
mbed_official 48:e9a2c7cb57a4 102
mbed_official 48:e9a2c7cb57a4 103 /*--------------------------- rt_resume -------------------------------------*/
mbed_official 48:e9a2c7cb57a4 104
mbed_official 48:e9a2c7cb57a4 105 void rt_resume (U32 sleep_time) {
mbed_official 48:e9a2c7cb57a4 106 /* Resume OS scheduler after suspend */
mbed_official 48:e9a2c7cb57a4 107 P_TCB next;
mbed_official 48:e9a2c7cb57a4 108 U32 delta;
mbed_official 48:e9a2c7cb57a4 109
mbed_official 48:e9a2c7cb57a4 110 os_tsk.run->state = READY;
mbed_official 48:e9a2c7cb57a4 111 rt_put_rdy_first (os_tsk.run);
mbed_official 48:e9a2c7cb57a4 112
mbed_official 48:e9a2c7cb57a4 113 os_robin.task = NULL;
mbed_official 48:e9a2c7cb57a4 114
mbed_official 48:e9a2c7cb57a4 115 /* Update delays. */
mbed_official 48:e9a2c7cb57a4 116 if (os_dly.p_dlnk) {
mbed_official 48:e9a2c7cb57a4 117 delta = sleep_time;
mbed_official 48:e9a2c7cb57a4 118 if (delta >= os_dly.delta_time) {
mbed_official 48:e9a2c7cb57a4 119 delta -= os_dly.delta_time;
mbed_official 48:e9a2c7cb57a4 120 os_time += os_dly.delta_time;
mbed_official 48:e9a2c7cb57a4 121 os_dly.delta_time = 1;
mbed_official 48:e9a2c7cb57a4 122 while (os_dly.p_dlnk) {
mbed_official 48:e9a2c7cb57a4 123 rt_dec_dly();
mbed_official 48:e9a2c7cb57a4 124 if (delta == 0) break;
mbed_official 48:e9a2c7cb57a4 125 delta--;
mbed_official 48:e9a2c7cb57a4 126 os_time++;
mbed_official 48:e9a2c7cb57a4 127 }
mbed_official 48:e9a2c7cb57a4 128 } else {
mbed_official 48:e9a2c7cb57a4 129 os_time += delta;
mbed_official 48:e9a2c7cb57a4 130 os_dly.delta_time -= delta;
mbed_official 48:e9a2c7cb57a4 131 }
mbed_official 48:e9a2c7cb57a4 132 } else {
mbed_official 48:e9a2c7cb57a4 133 os_time += sleep_time;
mbed_official 48:e9a2c7cb57a4 134 }
mbed_official 48:e9a2c7cb57a4 135
mbed_official 48:e9a2c7cb57a4 136 #ifndef __CMSIS_RTOS
mbed_official 48:e9a2c7cb57a4 137 /* Check the user timers. */
mbed_official 48:e9a2c7cb57a4 138 if (os_tmr.next) {
mbed_official 48:e9a2c7cb57a4 139 delta = sleep_time;
mbed_official 48:e9a2c7cb57a4 140 if (delta >= os_tmr.tcnt) {
mbed_official 48:e9a2c7cb57a4 141 delta -= os_tmr.tcnt;
mbed_official 48:e9a2c7cb57a4 142 os_tmr.tcnt = 1;
mbed_official 48:e9a2c7cb57a4 143 while (os_tmr.next) {
mbed_official 48:e9a2c7cb57a4 144 rt_tmr_tick();
mbed_official 48:e9a2c7cb57a4 145 if (delta == 0) break;
mbed_official 48:e9a2c7cb57a4 146 delta--;
mbed_official 48:e9a2c7cb57a4 147 }
mbed_official 48:e9a2c7cb57a4 148 } else {
mbed_official 48:e9a2c7cb57a4 149 os_tmr.tcnt -= delta;
mbed_official 48:e9a2c7cb57a4 150 }
mbed_official 48:e9a2c7cb57a4 151 }
mbed_official 48:e9a2c7cb57a4 152 #endif
mbed_official 48:e9a2c7cb57a4 153
mbed_official 48:e9a2c7cb57a4 154 /* Switch back to highest ready task */
mbed_official 48:e9a2c7cb57a4 155 next = rt_get_first (&os_rdy);
mbed_official 48:e9a2c7cb57a4 156 rt_switch_req (next);
mbed_official 48:e9a2c7cb57a4 157
mbed_official 48:e9a2c7cb57a4 158 rt_tsk_unlock();
mbed_official 48:e9a2c7cb57a4 159 }
mbed_official 48:e9a2c7cb57a4 160
mbed_official 48:e9a2c7cb57a4 161
mbed_official 48:e9a2c7cb57a4 162 /*--------------------------- rt_tsk_lock -----------------------------------*/
mbed_official 48:e9a2c7cb57a4 163
mbed_official 48:e9a2c7cb57a4 164 void rt_tsk_lock (void) {
mbed_official 48:e9a2c7cb57a4 165 /* Prevent task switching by locking out scheduler */
mbed_official 48:e9a2c7cb57a4 166 if (os_tick_irqn < 0) {
mbed_official 48:e9a2c7cb57a4 167 OS_LOCK();
mbed_official 48:e9a2c7cb57a4 168 os_lock = __TRUE;
mbed_official 48:e9a2c7cb57a4 169 OS_UNPEND (&pend_flags);
mbed_official 48:e9a2c7cb57a4 170 } else {
mbed_official 48:e9a2c7cb57a4 171 OS_X_LOCK(os_tick_irqn);
mbed_official 48:e9a2c7cb57a4 172 os_lock = __TRUE;
mbed_official 48:e9a2c7cb57a4 173 OS_X_UNPEND (&pend_flags);
mbed_official 48:e9a2c7cb57a4 174 }
mbed_official 48:e9a2c7cb57a4 175 }
mbed_official 48:e9a2c7cb57a4 176
mbed_official 48:e9a2c7cb57a4 177
mbed_official 48:e9a2c7cb57a4 178 /*--------------------------- rt_tsk_unlock ---------------------------------*/
mbed_official 48:e9a2c7cb57a4 179
mbed_official 48:e9a2c7cb57a4 180 void rt_tsk_unlock (void) {
mbed_official 48:e9a2c7cb57a4 181 /* Unlock scheduler and re-enable task switching */
mbed_official 48:e9a2c7cb57a4 182 if (os_tick_irqn < 0) {
mbed_official 48:e9a2c7cb57a4 183 OS_UNLOCK();
mbed_official 48:e9a2c7cb57a4 184 os_lock = __FALSE;
mbed_official 48:e9a2c7cb57a4 185 OS_PEND (pend_flags, os_psh_flag);
mbed_official 48:e9a2c7cb57a4 186 os_psh_flag = __FALSE;
mbed_official 48:e9a2c7cb57a4 187 } else {
mbed_official 48:e9a2c7cb57a4 188 OS_X_UNLOCK(os_tick_irqn);
mbed_official 48:e9a2c7cb57a4 189 os_lock = __FALSE;
mbed_official 48:e9a2c7cb57a4 190 OS_X_PEND (pend_flags, os_psh_flag);
mbed_official 48:e9a2c7cb57a4 191 os_psh_flag = __FALSE;
mbed_official 48:e9a2c7cb57a4 192 }
mbed_official 48:e9a2c7cb57a4 193 }
mbed_official 48:e9a2c7cb57a4 194
mbed_official 48:e9a2c7cb57a4 195
mbed_official 48:e9a2c7cb57a4 196 /*--------------------------- rt_psh_req ------------------------------------*/
mbed_official 48:e9a2c7cb57a4 197
mbed_official 48:e9a2c7cb57a4 198 void rt_psh_req (void) {
mbed_official 48:e9a2c7cb57a4 199 /* Initiate a post service handling request if required. */
mbed_official 48:e9a2c7cb57a4 200 if (os_lock == __FALSE) {
mbed_official 48:e9a2c7cb57a4 201 OS_PEND_IRQ ();
mbed_official 48:e9a2c7cb57a4 202 }
mbed_official 48:e9a2c7cb57a4 203 else {
mbed_official 48:e9a2c7cb57a4 204 os_psh_flag = __TRUE;
mbed_official 48:e9a2c7cb57a4 205 }
mbed_official 48:e9a2c7cb57a4 206 }
mbed_official 48:e9a2c7cb57a4 207
mbed_official 48:e9a2c7cb57a4 208
mbed_official 48:e9a2c7cb57a4 209 /*--------------------------- rt_pop_req ------------------------------------*/
mbed_official 48:e9a2c7cb57a4 210
mbed_official 48:e9a2c7cb57a4 211 void rt_pop_req (void) {
mbed_official 48:e9a2c7cb57a4 212 /* Process an ISR post service requests. */
mbed_official 48:e9a2c7cb57a4 213 struct OS_XCB *p_CB;
mbed_official 48:e9a2c7cb57a4 214 P_TCB next;
mbed_official 48:e9a2c7cb57a4 215 U32 idx;
mbed_official 48:e9a2c7cb57a4 216
mbed_official 48:e9a2c7cb57a4 217 os_tsk.run->state = READY;
mbed_official 48:e9a2c7cb57a4 218 rt_put_rdy_first (os_tsk.run);
mbed_official 48:e9a2c7cb57a4 219
mbed_official 48:e9a2c7cb57a4 220 idx = os_psq->last;
mbed_official 48:e9a2c7cb57a4 221 while (os_psq->count) {
mbed_official 48:e9a2c7cb57a4 222 p_CB = os_psq->q[idx].id;
mbed_official 48:e9a2c7cb57a4 223 if (p_CB->cb_type == TCB) {
mbed_official 48:e9a2c7cb57a4 224 /* Is of TCB type */
mbed_official 48:e9a2c7cb57a4 225 rt_evt_psh ((P_TCB)p_CB, (U16)os_psq->q[idx].arg);
mbed_official 48:e9a2c7cb57a4 226 }
mbed_official 48:e9a2c7cb57a4 227 else if (p_CB->cb_type == MCB) {
mbed_official 48:e9a2c7cb57a4 228 /* Is of MCB type */
mbed_official 48:e9a2c7cb57a4 229 rt_mbx_psh ((P_MCB)p_CB, (void *)os_psq->q[idx].arg);
mbed_official 48:e9a2c7cb57a4 230 }
mbed_official 48:e9a2c7cb57a4 231 else {
mbed_official 48:e9a2c7cb57a4 232 /* Must be of SCB type */
mbed_official 48:e9a2c7cb57a4 233 rt_sem_psh ((P_SCB)p_CB);
mbed_official 48:e9a2c7cb57a4 234 }
mbed_official 48:e9a2c7cb57a4 235 if (++idx == os_psq->size) idx = 0;
mbed_official 48:e9a2c7cb57a4 236 rt_dec (&os_psq->count);
mbed_official 48:e9a2c7cb57a4 237 }
mbed_official 48:e9a2c7cb57a4 238 os_psq->last = idx;
mbed_official 48:e9a2c7cb57a4 239
mbed_official 48:e9a2c7cb57a4 240 next = rt_get_first (&os_rdy);
mbed_official 48:e9a2c7cb57a4 241 rt_switch_req (next);
mbed_official 48:e9a2c7cb57a4 242 }
mbed_official 48:e9a2c7cb57a4 243
mbed_official 48:e9a2c7cb57a4 244
mbed_official 48:e9a2c7cb57a4 245 /*--------------------------- os_tick_init ----------------------------------*/
mbed_official 48:e9a2c7cb57a4 246
mbed_official 48:e9a2c7cb57a4 247 __weak int os_tick_init (void) {
mbed_official 48:e9a2c7cb57a4 248 /* Initialize SysTick timer as system tick timer. */
mbed_official 48:e9a2c7cb57a4 249 rt_systick_init ();
mbed_official 48:e9a2c7cb57a4 250 return (-1); /* Return IRQ number of SysTick timer */
mbed_official 48:e9a2c7cb57a4 251 }
mbed_official 48:e9a2c7cb57a4 252
mbed_official 48:e9a2c7cb57a4 253
mbed_official 48:e9a2c7cb57a4 254 /*--------------------------- os_tick_irqack --------------------------------*/
mbed_official 48:e9a2c7cb57a4 255
mbed_official 48:e9a2c7cb57a4 256 __weak void os_tick_irqack (void) {
mbed_official 48:e9a2c7cb57a4 257 /* Acknowledge timer interrupt. */
mbed_official 48:e9a2c7cb57a4 258 }
mbed_official 48:e9a2c7cb57a4 259
mbed_official 48:e9a2c7cb57a4 260
mbed_official 48:e9a2c7cb57a4 261 /*--------------------------- rt_systick ------------------------------------*/
mbed_official 48:e9a2c7cb57a4 262
mbed_official 48:e9a2c7cb57a4 263 extern void sysTimerTick(void);
mbed_official 48:e9a2c7cb57a4 264
mbed_official 48:e9a2c7cb57a4 265 void rt_systick (void) {
mbed_official 48:e9a2c7cb57a4 266 /* Check for system clock update, suspend running task. */
mbed_official 48:e9a2c7cb57a4 267 P_TCB next;
mbed_official 48:e9a2c7cb57a4 268
mbed_official 48:e9a2c7cb57a4 269 os_tsk.run->state = READY;
mbed_official 48:e9a2c7cb57a4 270 rt_put_rdy_first (os_tsk.run);
mbed_official 48:e9a2c7cb57a4 271
mbed_official 48:e9a2c7cb57a4 272 /* Check Round Robin timeout. */
mbed_official 48:e9a2c7cb57a4 273 rt_chk_robin ();
mbed_official 48:e9a2c7cb57a4 274
mbed_official 48:e9a2c7cb57a4 275 /* Update delays. */
mbed_official 48:e9a2c7cb57a4 276 os_time++;
mbed_official 48:e9a2c7cb57a4 277 rt_dec_dly ();
mbed_official 48:e9a2c7cb57a4 278
mbed_official 48:e9a2c7cb57a4 279 /* Check the user timers. */
mbed_official 48:e9a2c7cb57a4 280 #ifdef __CMSIS_RTOS
mbed_official 48:e9a2c7cb57a4 281 sysTimerTick();
mbed_official 48:e9a2c7cb57a4 282 #else
mbed_official 48:e9a2c7cb57a4 283 rt_tmr_tick ();
mbed_official 48:e9a2c7cb57a4 284 #endif
mbed_official 48:e9a2c7cb57a4 285
mbed_official 48:e9a2c7cb57a4 286 /* Switch back to highest ready task */
mbed_official 48:e9a2c7cb57a4 287 next = rt_get_first (&os_rdy);
mbed_official 48:e9a2c7cb57a4 288 rt_switch_req (next);
mbed_official 48:e9a2c7cb57a4 289 }
mbed_official 48:e9a2c7cb57a4 290
mbed_official 48:e9a2c7cb57a4 291 /*--------------------------- rt_stk_check ----------------------------------*/
mbed_official 48:e9a2c7cb57a4 292
mbed_official 48:e9a2c7cb57a4 293 __weak void rt_stk_check (void) {
mbed_official 48:e9a2c7cb57a4 294 /* Check for stack overflow. */
mbed_official 48:e9a2c7cb57a4 295 if ((os_tsk.run->tsk_stack < (U32)os_tsk.run->stack) ||
mbed_official 48:e9a2c7cb57a4 296 (os_tsk.run->stack[0] != MAGIC_WORD)) {
mbed_official 48:e9a2c7cb57a4 297 os_error (OS_ERR_STK_OVF);
mbed_official 48:e9a2c7cb57a4 298 }
mbed_official 48:e9a2c7cb57a4 299 }
mbed_official 48:e9a2c7cb57a4 300
mbed_official 48:e9a2c7cb57a4 301 /*----------------------------------------------------------------------------
mbed_official 48:e9a2c7cb57a4 302 * end of file
mbed_official 48:e9a2c7cb57a4 303 *---------------------------------------------------------------------------*/
mbed_official 48:e9a2c7cb57a4 304