Paolo Mantegazza wrote:
>
> It seems to me that you are using the interrupt vector 0xF1 for IPIs
> without installing any IPI handler. In the previous RTAI, 0.1, version
> it was checked because we shared IPIs with Linux now we use our own and
> let Linux show the message above for diagnose.
> In fact it is RTAI_4_VECTOR, i.e. 0xF1 or 241. Linux diagnoses it as 209
> because it subtracts 32 for the first 32 reserved irqs.
> The rtai SMP scheduler uses it to send rescheduling messages. I do not
> understand how you got there. There is a 1 Khz timer example that shows
> how to use IPI messages without the scheduler to process timer
> interrupts if you need just a periodic task that want to exploit all the
> available CPUs for a lot of fp calculations, with fifos to communicate
> to/from a Linux process that tries to write a fifo sent 5Mb/s directly
> to disk.
Now it works ...
I've just changed the RT_TASK which handle sending_message
with a function call which does the same thing.
After some tries , I've found that it was the rt_semaphore
which caused this unexpected IRQ. ( I've tried with only
a loop and the rt_sem_wait inside ... )
I don't use any IPI messages at all , unless the semaphores.
> Can I have a look at your code?
I'm sorry but I've modified my driver into functions ...
The driver did :
###########################################################################
SEM sem_sender ;
RT_TASK tasksender ;
void threadsender(int data)
{
for(;;)
{
rt_sem_wait(&sem_sender) ;
... Jobs to do ...
}
}
int init_module(void)
{
....
rt_sem_init(&sem_sender,0) ;
rt_task_init(&tasksender,&threadsender,0,1024,20,0,NULL) ;
rt_task_resume(&tasksender) ;
...
return 0 ;
}
*** in an other module ....
extern SEM sem_sender ;
void my_synchro_function(int data)
{
for(;;)
{
rt_sem_wait(&sem_synchro) ;
........
rt_sem_signal(&sem_sender) ;
........
}
}
... ( with priority 20 for this thread ) ...
###########################################################################
But I have some others RT_TASKs that work like that without any error.
The only thing that changes, is that this RT_TASK was unblocked by
another
RT_TASK with the same priority.
Thanks for all.
>
--
Kumsta Christophe
<[EMAIL PROTECTED]>
Real-Time System developper
RT-Linux (RTAI) Use the Source Luck !
--- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
----
For more information on Real-Time Linux see:
http://www.rtlinux.org/~rtlinux/