Hi,
I have spent a lot of time trying to figure out why I am getting
"Aiee" errors (mostly "scheduling in interrupt") after I've modified
the rate-monotonic scheduler of the RTL. Based on what I found on the
web (other people having similar problems), it seems that increments
and decrements of the intr_count variable are not always paired. Since
this variable is not mentioned in any RTL scheduler, could it be that
preempting the Linux kernel at certain points can make it mishandle
the intr_count variable? My modification (I already sent code that had
a very minor bug, but was essentially the same as the latest one) is
fairly simple, I just added the Linux kernel as another periodic
task. The idea is depicted below
Linux (aperiodic) +++-+-----------++-+
Linux (period 5ms, demand <= 1ms) ---+----+----+----+-
RTT (period 50ms, demand 10ms) -----+++-++++-+++---
The Linux kernel has to do a lot of networking (my networking code
runs only at user level). Without this periodic Linux kernel, the
Epic100 NIC driver starts dropping packets after some time because it
can't catch up, because RT tasks take too much time; the 3com
Boomerang driver even causes a segfault because some sfb's are
incorrectly passed to skb_free(). With the periodic Linux kernel, my
code runs for some time, then I start getting bursts of the Aiee error
(more and more, until it never disappears), and then also other Aiee
and similar errors, when the system essentially crashes.
Could someone please advise me how to approach this problem? Since the
rewriting of the interrupt handling is the base of the RTL, I hope
someone will be able to help.
Thanks in advance,
Aleks
--- [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/