Hi,
has anybody ported the PREEMPT_RT patch to uClinux (best would be kernel 
2.6.20, microblaze) or can say if it would help for the following problem?:

My system is microblaze, kernel 2.6.20, kernel preemption patch 
(CONFIG_PREEMPT) enabled.

I wrote a Linux kernel driver that just notifies IRQs in its ISR and wakes a 
wait_queue where my SCHED_RR user-application (in user space) is waiting on it 
while sleeping in poll(). Normally, the user app is scheduled next and poll() 
awakes quite fast (0.5msec).
But if concurrently another process is sending much data via TCP/IP I see the 
behaviour that the TCP stack (which is runing in software by the Linux kernel 
itself) locks kernel preemption for up to 10 msecs. For example, when 
tcp_sendmsg cannot skb_alloc new packets and jumps to label wait_for_memory, 
where it calls release_socket() for waiting till packets are available again. 
This blocking call also blocks preemption for any reasons. In such time window 
my driver can collect IRQs in its ISR but the scheduler is blocked and my user 
app doesn't wake up. Although it has the highest SCHED_RR priority in the whole 
system. I've seen other scenarios with similar behaviour.

I'm wondering if PREEMPT_RT would help for e.g. such scenario?
Any other idea is highly appreciated. :-)

I know Linux is not a realtime OS but I'd like to tune it that TCP/IP doesn't 
block the scheduler for such IRQ translating from Linux driver to SCHED_RR 
application.

Cheers, Falk

-- 
Ist Ihr Browser Vista-kompatibel? Jetzt die neuesten 
Browser-Versionen downloaden: http://www.gmx.net/de/go/browser
_______________________________________________
uClinux-dev mailing list
[email protected]
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by [email protected]
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev

Reply via email to