Peter Breuer wrote:
> Hello, 
> I finally had the time to test some different settings...
> 
> I wrote the following program:
> #include <sys/mman.h>
> #include <native/task.h>
> #include <native/intr.h>
> 
> #define IRQ_NUMBER 100  /* Intercept interrupt */
> #define IRQ_MODE   I_NOAUTOENA //I_PROPAGATE //0
> #define TASK_PRIO  99 /* Highest RT priority */
> #define TASK_MODE  T_FPU  /*  */
> #define TASK_STKSZ 0  /* Stack size (use default one) */
> #define PIPE_MINOR 0
> 
> RT_INTR intr_desc;
> 
> RT_TASK server_desc;
> 
> 
> void irq_server (void *cookie)
> 
> {
>         int err =
> rt_intr_create(&intr_desc,"MyIrq",IRQ_NUMBER,IRQ_MODE);
>         printf("int create: %d\n", err);
>         err = rt_intr_enable(&intr_desc);
>         printf("enable int: %d\n", err);
>         printf("begin..\n");
>         err = rt_intr_wait(&intr_desc,TM_INFINITE);
>         printf("int wait:%d\n", err);
> 
> }
> 
> int main (int argc, char *argv[])
> 
> {
>         int err;
>         int a;
>         printf("Programmstart\n");
>         mlockall(MCL_CURRENT|MCL_FUTURE);
> 
>         err = rt_task_create(&server_desc,
>                                 "MyIrqServer",
>                                 TASK_STKSZ,
>                                 TASK_PRIO,
>                                 TASK_MODE);
>         printf("task create: %d\n", err);
>         rt_task_start(&server_desc,&irq_server,NULL);
> }
> 
> void cleanup (void)
> 
> {
>     rt_intr_delete(&intr_desc);
>     rt_task_delete(&server_desc);
> }
> 
> When I start it with the compiled xenomai, it runs until the
> rt_intr_wait() and then quits, without any message. It doesnt even
> execute printf("int wait:%d\n", err)
> create_task, create_intr and enable_intr all return 0. 
> When I start the programm with a kernel, where xenomai isnt compiled in,
> then it quits and complains about it. 
> When I start the programm with xenomai debug settings compiled in the
> kernel, the system freezes at task creating. Heres the output:
> Programmstart
> taskXenomai: fatal: bug at kernel/xenomai/nucleus/shadow.c
> :1128 (!irqs_disabled_hw())
> CPU PID PRI TIMEOUT STAT NAME
> 0 0 -1 0 00400088 ROOT
>> 0 923 99 0 00300180 MyIrqServer
> Master time base: clock=114327768
> [<c002bde4>] (show_stack+0x0/0x48) from [<c006e69c>] (xnshadow_harden
> +0x1d0/0x21c)
> [<c006e4cc>] (xnshadow_harden+0x0/0x21c) from [<c006ec00>]
> (xnshadow_wait_barrier+0x124/0x138)
> [<c006eadc>] (xnshadow_wait_barrier+0x0/0x138) from [<c006fbe4>]
> (xnshadow_sys_barrier+0x14/0x18)
> r6:c309a000 r5:c309bfb0 r4:00000001
> [<c006fbd0>] (xnshadow_sys_barrier+0x0/0x18) from [<c006ff70>]
> (losyscall_event+0xb4/0x1ac)
> [<c006febc>] (losyscall_event+0x0/0x1ac) from [<c0061214>]
> (__ipipe_dispatch_event+0xd0/0x1c8)
> [<c0061144>] (__ipipe_dispatch_event+0x0/0x1c8) from [<c002cc5c>]
> (__ipipe_syscall_root+0x80/0x100)
> [<c002cbdc>] (__ipipe_syscall_root+0x0/0x100) from [<c0028108>]
> (vector_swi+0x68/0xa8)
> 
> Any ideas? 
> is the irq-number, that I need for the rt_intr_create() the same number
> that is shown in /proc/interrupts?
> thx, greetings, 
> Peter

You are using a too old patch. Please use an I-pipe patch for linux
2.6.28 or above.



-- 
                                            Gilles.

_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to