diff options
| author | chenyingchun0312 <[email protected]> | 2020-09-22 17:10:48 +0800 |
|---|---|---|
| committer | chenyingchun0312 <[email protected]> | 2020-09-22 17:10:48 +0800 |
| commit | 797ce29ae0ed103d9684360dd931e58820ad7511 (patch) | |
| tree | 619159c581c6cec8afdda8088bc987078dcca22f /src | |
| parent | 02a609e33fbf811f043cd0c628b7d1266a4d41c2 (diff) | |
| parent | 8302a7224302c0624b9918855a25e12f3a3ede59 (diff) | |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'src')
| -rw-r--r-- | src/scheduler.c | 2 | ||||
| -rw-r--r-- | src/thread.c | 12 |
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 |
