I am using rtlinux for an acquisition system and I am having a problem with the
real-time fifos.  I have fifo on a PCI busmaster and when it reaches half full
I get an interrupt and set up the PCI device to do a busmastering transfer. 
When the transfer is complete I get a second interrupt so I can process the
data and dump it into a real-time fifo.  I am calling rtf_put inside of the
real-time ISR as well as occasionally calling printk, is this legal?  In normal
user land I have a high prioroty (-20) task reading the fifo into a shared
memory area so all it does is sit in a continuous while(fread(...)){} loop. 
The problem I am having is that if I stress the system using
        make bzImage
                or
        for FI in `find /usr/ -type f`; do
                cat $FI >/dev/null
        done
the user task stops reading the fifo and it fills up causing the real-time
interrupt to fail the rtf_put calls since the fifo is full.  It appears that the
fread call is not returning, it it returned with an error the program would
exit and it is not.  Once this happens all future rtf_put calls fail even is
the system load is eliminated, the fifo just stays full.  The fifo is large
enough for 2 seconds of data. I was originally using 2.2.10beta11 and am now
using 2.2.12beta16 with the same results.  Any help would be appreciated.  If
someone using real-time fifos could try to repoduce this so I know if its my
setup or not that would be great to.  All tasks are running as root.
--- [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/

Reply via email to