summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorchenyingchun0312 <[email protected]>2020-09-22 17:10:48 +0800
committerchenyingchun0312 <[email protected]>2020-09-22 17:10:48 +0800
commit797ce29ae0ed103d9684360dd931e58820ad7511 (patch)
tree619159c581c6cec8afdda8088bc987078dcca22f /src
parent02a609e33fbf811f043cd0c628b7d1266a4d41c2 (diff)
parent8302a7224302c0624b9918855a25e12f3a3ede59 (diff)
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'src')
-rw-r--r--src/scheduler.c2
-rw-r--r--src/thread.c12
2 files changed, 11 insertions, 3 deletions
diff --git a/src/scheduler.c b/src/scheduler.c
index 0c1bf1e506..699c817270 100644
--- a/src/scheduler.c
+++ b/src/scheduler.c
@@ -784,7 +784,7 @@ void rt_schedule_remove_thread(struct rt_thread *thread)
{
#if RT_THREAD_PRIORITY_MAX > 32
pcpu->ready_table[thread->number] &= ~thread->high_mask;
- if (rt_thread_ready_table[thread->number] == 0)
+ if (pcpu->ready_table[thread->number] == 0)
{
pcpu->priority_group &= ~thread->number_mask;
}
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