[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: [rtl] Re: [RTAI] rtai-0.2x test



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
<kumsta@easynet.fr>
Real-Time System developper
RT-Linux (RTAI) Use the Source Luck !
--- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail majordomo@rtlinux.cs.nmt.edu OR
echo "unsubscribe rtl <Your_email>" | mail majordomo@rtlinux.cs.nmt.edu
----
For more information on Real-Time Linux see:
http://www.rtlinux.org/~rtlinux/