diff options
author | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2014-10-06 14:31:11 +0000 |
---|---|---|
committer | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2014-10-06 14:31:11 +0000 |
commit | 66ff6722d223a1fee94c13f2704dda48acc63e8e (patch) | |
tree | 6881daf68b7c49eee49c1a2a7e8b879e7d95d84f /os/rt/ports/ARMCMx/cmsis_os/cmsis_os.c | |
parent | 855065f2390b698ef6e1e68a7a75535230b3e1e8 (diff) | |
download | ChibiOS-66ff6722d223a1fee94c13f2704dda48acc63e8e.tar.gz ChibiOS-66ff6722d223a1fee94c13f2704dda48acc63e8e.tar.bz2 ChibiOS-66ff6722d223a1fee94c13f2704dda48acc63e8e.zip |
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@7380 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/rt/ports/ARMCMx/cmsis_os/cmsis_os.c')
-rw-r--r-- | os/rt/ports/ARMCMx/cmsis_os/cmsis_os.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/os/rt/ports/ARMCMx/cmsis_os/cmsis_os.c b/os/rt/ports/ARMCMx/cmsis_os/cmsis_os.c index d8aa35cb5..9cf601248 100644 --- a/os/rt/ports/ARMCMx/cmsis_os/cmsis_os.c +++ b/os/rt/ports/ARMCMx/cmsis_os/cmsis_os.c @@ -109,6 +109,39 @@ osStatus osKernelStart(void) { }
/**
+ * @brief Creates a thread.
+ */
+osThreadId osThreadCreate (osThreadDef_t *thread_def, void *argument) {
+ size_t size;
+
+ size = thread_def->stacksize == 0 ? CMSIS_CFG_DEFAULT_STACK :
+ thread_def->stacksize;
+ return (osThreadId)chThdCreateFromHeap(0,
+ THD_WORKING_AREA_SIZE(size),
+ NORMALPRIO+thread_def->tpriority,
+ (tfunc_t)thread_def->pthread,
+ argument);
+}
+
+/**
+ * @brief Thread termination.
+ * @note The thread is not really terminated but asked to terminate which
+ * is not compliant.
+ */
+osStatus osThreadTerminate(osThreadId thread_id) {
+
+ if (thread_id == osThreadGetId()) {
+ /* Note, no memory will be recovered unless a cleaner thread is
+ implemented using the registry.*/
+ chThdExit(0);
+ }
+ chThdTerminate(thread_id);
+ chThdWait((thread_t *)thread_id);
+
+ return osOK;
+}
+
+/**
* @brief Change thread priority.
* @note This can interfere with the priority inheritance mechanism.
*/
|