summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2020-09-03 10:36:04 +0800
committerGitHub <[email protected]>2020-09-03 10:36:04 +0800
commitf3d1e7113171f6e9c2d16dc6725a2f08108931ba (patch)
treedbefb280019eca61a1d970a71879edffa04ed9d9
parent82ac7d1eeaeda83d874d14f59140e7a6d368270b (diff)
parentc15a7858c9a7bc1f978faa5f0ea3f618fbd3bc03 (diff)
Merge pull request #3872 from ErnestChen1/master
[fix] thread control bug about RT_THREAD_CTRL_CLOSE command
-rw-r--r--src/thread.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/thread.c b/src/thread.c
index 715596b132..9f80482b20 100644
--- a/src/thread.c
+++ b/src/thread.c
@@ -679,9 +679,17 @@ rt_err_t rt_thread_control(rt_thread_t thread, int cmd, void *arg)
case RT_THREAD_CTRL_STARTUP:
return rt_thread_startup(thread);
-#ifdef RT_USING_HEAP
case RT_THREAD_CTRL_CLOSE:
- return rt_thread_delete(thread);
+
+ if (rt_object_is_systemobject((rt_object_t)thread) == RT_TRUE)
+ {
+ return rt_thread_detach(thread);
+ }
+#ifdef RT_USING_HEAP
+ else
+ {
+ return rt_thread_delete(thread);
+ }
#endif
#ifdef RT_USING_SMP