Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: BufferedSerial
Dependents: rtos_basic rtos_basic
Fork of mbed-rtos by
Diff: rtos/Thread.cpp
- Revision:
- 84:143955ffb790
- Parent:
- 76:85a52b7ef44b
- Child:
- 85:ef0a22cdf839
--- a/rtos/Thread.cpp Tue Jun 16 07:45:29 2015 +0100
+++ b/rtos/Thread.cpp Wed Jun 17 10:00:10 2015 +0100
@@ -41,6 +41,11 @@
error("Error allocating the stack memory\n");
_dynamic_stack = true;
}
+
+ //Fill the stack with a magic word for maximum usage checking
+ for (int i = 0; i < (stack_size / sizeof(uint32_t)); i++) {
+ _thread_def.stack_pointer[i] = 0xE25A2EA5;
+ }
#endif
#endif
_tid = osThreadCreate(&_thread_def, argument);
@@ -76,6 +81,43 @@
#endif
}
+uint32_t Thread::stack_size() {
+#ifndef __MBED_CMSIS_RTOS_CA9
+ return _thread_def.tcb.priv_stack;
+#else
+ return 0;
+#endif
+}
+
+uint32_t Thread::free_stack() {
+#ifndef __MBED_CMSIS_RTOS_CA9
+ uint32_t bottom = (uint32_t)_thread_def.tcb.stack;
+ return _thread_def.tcb.tsk_stack - bottom;
+#else
+ return 0;
+#endif
+}
+
+uint32_t Thread::used_stack() {
+#ifndef __MBED_CMSIS_RTOS_CA9
+ uint32_t top = (uint32_t)_thread_def.tcb.stack + _thread_def.tcb.priv_stack;
+ return top - _thread_def.tcb.tsk_stack;
+#else
+ return 0;
+#endif
+}
+
+uint32_t Thread::max_stack() {
+#ifndef __MBED_CMSIS_RTOS_CA9
+ uint32_t high_mark = 0;
+ while (_thread_def.tcb.stack[high_mark] == 0xE25A2EA5)
+ high_mark++;
+ return _thread_def.tcb.priv_stack - (high_mark * 4);
+#else
+ return 0;
+#endif
+}
+
osEvent Thread::signal_wait(int32_t signals, uint32_t millisec) {
return osSignalWait(signals, millisec);
}
