Sunday, August 27, 2006

xenomai initialize - resend

modules.c:

int __init __xeno_sys_init(void)

include/asm-blackfin/system.h:

static inline int xnarch_init (void)

{
int err;

/* Register the irq_tail_hook - do rescheduling */

__ipipe_irq_tail_hook = (unsigned long)&xnpod_schedule_deferred;

/* Register Xenomai domain */
err = rthal_init();

if (err)
return err;

#ifdef CONFIG_SMP
/* The HAL layer also sets the same CPU affinity so that both
modules keep their execution sequence on SMP boxen. */
set_cpus_allowed(current,cpumask_of_cpu(0));
#==endif /* CONFIG_SMP */

err = xnarch_calibrate_sched();

if (err)
return err;

xnarch_escalation_virq = rthal_alloc_virq();

if (xnarch_escalation_virq == 0)
return -ENOSYS;

rthal_virtualize_irq(&rthal_domain,
xnarch_escalation_virq,
(rthal_irq_handler_t)&xnpod_schedule_handler,
NULL,
NULL,
IPIPE_HANDLE_MASK | IPIPE_WIRED_MASK);

xnarch_old_trap_handler = rthal_trap_catch(&xnarch_trap_fault);

return 0;

No comments:

Blog Archive