Subject: Re: ltsleep while cold
To: Jason Thorpe <firstname.lastname@example.org>
From: john heasley <email@example.com>
Date: 02/02/2005 14:59:10
Wed, Feb 02, 2005 at 02:51:57PM -0800, Jason Thorpe:
> On Feb 2, 2005, at 12:14 PM, Martin Husemann wrote:
> > /* the wakeup for this is in kbd_was_reset(). */
> > error = tsleep((caddr_t)&ks->kbd_id, PZERO | PCATCH, devopn,
> >While cold, the (l)tsleep does only bounce spl to give interrupts a
> >but does not cause any serious delay.
> >Now there are several ways to work around/fix this:
> > 1) remove the wakeup, adjust spl() and just turn the tsleep into a
> > then restore spl.
> Is there actually a wakeup() for this? If so, then it must be testing
> some condition. The "after tsleep" case should also test the same
> condition, to guard against spurious wakeups.
there is a wakeup. a for() loop for N retries plus a value that the reset
code handler can use to indicate that it received a response which may be
that the keyboard failed it's self-test would be a good solution.
side note, the tsleep should timeout after KBD_RESET_TIMO (ms), not hz.