Hi,

That's funny.  I can receive 1-ms interrupts on an old pentium 166 machine
and use the wakeup_np function inside the interrupt handler.  But I only
wake up the thread every 100 interrupts.  Depending on the processing load
in the thread, I do find that I can miss interrupts and believe wakeup_np
perhaps has an excessive amount of overhead associated with it.  I ended up
using a more efficient signaling mechanism that doesn't have to constantly
wake up the thread.  But it worked, and didn't freeze my machine.

The other thing I did differently is keeping everything in one kernel
module.  It sounds like you actually load seperate kernel modules.  I never
thought about that before.

Oliver Enders




                                                                                       
         
                    Marvin Germain                                                     
         
                    <megermain@eart        To:     [EMAIL PROTECTED]                     
         
                    hlink.net>             cc:                                         
         
                    Sent by:               Subject:     [rtl] keyboard freeze with one 
percent  
                    owner-rtl@fsmla        CPU load                                    
         
                    bs.com                                                             
         
                                                                                       
         
                                                                                       
         
                    07/30/01 04:15                                                     
         
                    PM                                                                 
         
                    Please respond                                                     
         
                    to rtl                                                             
         
                                                                                       
         
                                                                                       
         




Hello, all.
My mouse and keyboard freeze when I call pthread_wakeup_np() from within
a hard interrupt service routine.  I am using RTLinux 3.0 with kernel
2.2.18 on a 1.5 GHz P4.  My project uses two RTLinux modules: The first
services hardware interrupts and transfers data from a DAQ board into an
mbuff.  The first module then wakes up a thread containied in a second
module which performs computations on the data.  Here is the basic
format:

**************
First module:     *
**************

extern pthread_t myThread;

unsigned int my_isr(unsigned int irq, struct pt_regs *regs) {
   /* perform hardware-related things here */
   rtl_hard_enable_irq(irq);
   pthread_wakeup_np(myThread);
}


***************
Second module:  *
***************

pthread_t myThread;

void *myEntryPoint(void *p) {
   while(1) {
      pthread_suspend_np(myThread);
      /* perform calculations here */
   }
}

When the interrupt rate is once every five milli-seconds, the mouse and
keyboard freeze within two to three seconds.   If I slow down the
hardware so that the interrupts come only once every six milli-seconds,
everything seems fine.  I timed the execution of the ISR at 50
micro-seconds.  So the CPU loading is only one percent.  The freezes
occur even if I comment out everything in the while-loop except for the
pthread_suspend_np().  The freezes do NOT occur if I comment out the
pthread_wakeup_np() from the ISR.  Any ideas?

Marvin
-
*********************************************
*         Dr. Marvin E. Germain             *
*         Zygo Corporation - Tucson AZ      *
*         [EMAIL PROTECTED]           *
*********************************************

----- End of forwarded message from [EMAIL PROTECTED] -----
-- [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/




----- End of forwarded message from [EMAIL PROTECTED] -----
-- [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