void k_thread_abort(k_tid_t thread) { unsigned int key; key = irq_lock(); _k_thread_single_abort(thread); _thread_monitor_exit(thread); if (_current == thread) { _Swap(key); CODE_UNREACHABLE; } /* The abort handler might have altered the ready queue. */ _reschedule_threads(key); }
int k_thread_cancel(k_tid_t tid) { struct k_thread *thread = tid; int key = irq_lock(); if (_has_thread_started(thread) || !_is_thread_timeout_active(thread)) { irq_unlock(key); return -EINVAL; } _abort_thread_timeout(thread); _thread_monitor_exit(thread); irq_unlock(key); return 0; }