Re: Driver (lackof) Robustness

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



John Levon wrote:

>Then you are probably doing a non-interruptible wait. Use
>wait_event_interruptible, then you can check if the task woke up with :
>
>	if (signal_pending(current))
>
>or some such.
>
>The ctrl-c should be sending a signal..
>
Correct, exactly as I have it.  And I have added printk's that indicate 
that the wait state has ended because of something other than the 
condition that I was waiting for, so I think that the signal is 
unblocking the blocked I/O.  The actual setup is this.  The main process 
does two (could be up to 16) pthread_creates.  Each of these created 
threads makes an ioctl call to the driver.  The driver does a 
wait_event_interruptable.  If the irq happens, I set the condition and 
wake the wait queue in the irq handler and return from the handler.  The 
calling blocked thread returns, does whatever it is supposed to and 
then, if necessary, does the ioctl call again.  If something other than 
the correct condition awakens the wait_event_interruptable, part of the 
data returned to the calling thread indicates an abort condition which 
breaks any further calls by this thread and the thread ends.  I assume 
that the main process and the two blocked threads all get the ctrl-c 
signal and terminate.

-- 
Best regards,
David Stroupe
Keyed-Up Software
5307 Faireast Court
Arlington, Texas 76018-1683
817/557-4903 voice
817/472-0408 fax



--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           http://kernelnewbies.org/faq/


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux