Salut,
I've got into trouble with the Linux 2.6 keyboard layer of Linux
2.6.0-test9* (That is, I've tested the original as well as BK and the
mm1 and mm2 patches.) The problem is the keyboard buffer.
tty->filp.char_buf is filled correctly by my typings. The buffer state
goes up, and once I've typed 255 characters, of course it's
full. *But* the big deal with the keyboard buffer is usually somebody
who's reading out the contents and processing it, so that the
characters I typed are processed. This is *not* taking place. The
buffer just fills up and there we are.
I'm of course trying to solve that problem on my own (I remember that
last time I've had a problem no one even read my email), but I'd be
glad if you'd give me some additional hints on what to do.
If I use SysRq, the whole thing works, of course, as SysRqs aren't
read from the input buffer.
(The input is processed corectly all the way from the keyboard (PS/2
or USB, doesn't matter, as it works both ways.) into the buffers. The
up/down events are handled correctly. The only thing that's wrong is
that nobody is reading out the buffer afterwards.)
Thanks a lot for every helpful response.
Thunder
Salut,
> tty->filp.char_buf is filled correctly by my typings. The buffer
> state goes up, and once I've typed 255 characters, of course it's
> full. *But* the big deal with the keyboard buffer is usually
> somebody who's reading out the contents and processing it, so that
> the characters I typed are processed. This is *not* taking
> place. The buffer just fills up and there we are.
I've explored the kernel stack a bit using SysRq hacks, and I found
out that this misbehavior was in fact caused by ISDN. It added a work
for "isac_bh()" into the CPU workqueue with list heads inited, so
every time the work got executed, execution looped, and since ISDN was
loaded before I typed the first character, the flush_to_ldisc() work
was never run. I'm going to fix that bug soon.
Thunder