void psostask_cleanup(void) { xnholder_t *holder; spl_t s; xnlock_get_irqsave(&nklock, s); while ((holder = getheadq(&psostaskq)) != NULL) { psostask_t *task = link2psostask(holder); xnpod_abort_thread(&task->threadbase); xnlock_sync_irq(&nklock, s); } xnlock_put_irqrestore(&nklock, s); xnpod_remove_hook(XNHOOK_THREAD_DELETE, psostask_delete_hook); }
void wind_task_cleanup(void) { xnholder_t *holder; spl_t s; xnlock_get_irqsave(&nklock, s); while ((holder = getheadq(&wind_tasks_q)) != NULL) { WIND_TCB *pTcb = link2wind_task(holder); xnpod_abort_thread(&pTcb->threadbase); xnlock_sync_irq(&nklock, s); } xnlock_put_irqrestore(&nklock, s); xnpod_remove_hook(XNHOOK_THREAD_DELETE, wind_task_delete_hook); }
void __rtai_task_pkg_cleanup(void) { xnholder_t *holder; spl_t s; xnlock_get_irqsave(&nklock, s); while ((holder = getheadq(&__rtai_task_q)) != NULL) { RT_TASK *task = link2rtask(holder); xnpod_abort_thread(&task->thread_base); xnlock_sync_irq(&nklock, s); } xnlock_put_irqrestore(&nklock, s); xnpod_remove_hook(XNHOOK_THREAD_DELETE, &__task_delete_hook); if (__rtai_task_sig) xnpod_remove_hook(XNHOOK_THREAD_SWITCH, &__task_switch_hook); }