Hi, all,
I use rtlinux2.2 with kernel 2.2.14. I am working on the NI6024 PCI data
aquisition board and its driver, the EDAQ driver, which doesn't support
any real-time function. I tried add functions so that the kernel can
notify the user space when interrupt happens. I tried to use "fifo" to set
up the communication between kernel and user space. I added the code in
the driver:

    if(access(FIFO_NAME, F_OK) == -1){
    res = mkfifo(FIFO_NAME, 0777);
    if(res != 0) {
       DEBUG_PRINT (("Xu could not create fifo %s, res = %d, errno =
%d\n", FIFO_NAME, res, errno));
      //      exit(EXIT_FAILURE);
    }
    }

But when I install the driver, it outputs the errno = 14 which is EFAULT.
I think it cannot access this address.
Now I have two questions:

(1). I found somewhere says that Linux kernel may be preempted by an RT
task even during a system call, so no Linux routine can be safely called
from real-time tasks.
Actually, I even haven't install any real-time module yet.
Is that true the fifo preempted by the RT task so that I cannot
successfully set up a fifo in a normal Linux driver but with rtlinux
kernel? If this is the reason, do I have to remove the rtlinux and
recompile the kernel so the system will be normal Linux?

(2) Is there any restriction for the PCI board to access the memory?

any advice?

Thank you.

Xu

-- [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/

Reply via email to