void xnsched_destroy(struct xnsched *sched) { xntimer_destroy(&sched->htimer); xntimer_destroy(&sched->rrbtimer); xntimer_destroy(&sched->rootcb.ptimer); xntimer_destroy(&sched->rootcb.rtimer); #ifdef CONFIG_XENO_OPT_WATCHDOG xntimer_destroy(&sched->wdtimer); #endif /* CONFIG_XENO_OPT_WATCHDOG */ }
void xntslave_destroy(xntslave_t *slave) { int nr_cpus, cpu, n; spl_t s; for (cpu = 0, nr_cpus = xnarch_num_online_cpus(); cpu < nr_cpus; cpu++) { struct percpu_cascade *pc = &slave->cascade[cpu]; xnlock_get_irqsave(&nklock, s); xntimer_destroy(&pc->timer); xnlock_put_irqrestore(&nklock, s); for (n = 0; n < XNTIMER_WHEELSIZE; n++) { xnqueue_t *timerq = &pc->wheel[n]; xntlholder_t *holder; while ((holder = xntlist_head(timerq)) != NULL) { __setbits(plink2timer(holder)->status, XNTIMER_DEQUEUED); xntlist_remove(timerq, holder); } } } }