V68 - what does disjointio do?

John Gonnerman jcg at tree.UUCP
Tue Jun 27 04:57:41 AEST 1989


In a mail message, ...!texbell!moray!siswat!buck (A. Lester Buck) writes:
 I obviously can't tell you where your driver bug is, but I can give you
 a pointer in debugging it yourself.  The driver is clearly hung
 "fast" asleep, sleeping for some interrupt that never comes and at
 a priority level that is sufficient to block the receipt of signals
 from other processes.

 Since you have complete source (it sounds like), you can use the
 output of the "ps" command (full listing) which gives the WCHAN
 that the process is sleeping for.  This is the address that something
 in the kernel has to do a wakeup() on to get things moving again.
 This is (almost always) a kernel address inside the driver.  Just
 add a bunch of kernel printf's to the driver so it spits out the
 address it is sleeping on before each sleep() in the driver, wait
 for a hang, and run ps to find out where the problem is.  

 The "bug" is probably that the writer said "Oh, that interrupt
 will ALWAYS happen, so I don't need a watch-dog timer going to
 awaken me if I miss it."  Sure....


(I TRIED to mail this... but got it back with a note that site moray
does not exist.  So much for R)eply.  So, I am posting it, both to 
thank Mr. Buck and for the edification of those like me that need this.)

THANX!  I needed that help!  Yes, we have full source code, but I am not a 
kernel hacker.  Applications and Administration is hard enough.  Yours is the
first reply I have received, and should be very helpful.

-- 
              __    |            -- John C. Gonnerman -- 
          \__/ __   |  ..!ucbvax!pasteur!ames!pacbell!sactoh0!tree!jcg
       \__/  \__/   | 
	  \__       |           "THIS is the Age of Magic!"



More information about the Comp.unix.wizards mailing list