Path: utzoo!mnetor!uunet!mcvax!ukc!warwick!csrng
From: csrng@daisy.warwick.ac.uk (C S PCB Group)
Newsgroups: comp.os.minix
Subject: Re: Serial TTY driver
Message-ID: <398@sol.warwick.ac.uk>
Date: 14 Dec 87 15:25:02 GMT
Reply-To: arthur@snow.UUCP (John Vaudin)
Organization: Computer Science, Warwick University, UK
Lines: 25

We use MINIX permanently through a serial tty driver, and we too had
the problem of hanging due to missed interrupts.

The problems are to do with the way MINIX deals with interrupts that cannot
be handled immediately. Basically when an interrupt goes off , if it cannot
be accepted by the relevant task then the message is remembered and sent
when that task becomes free. The first problem is that there is only one
pending message so further missed interupts overwrite previous ones, this
is usually the problem with the tty. If you type fast enough you will
overwrite an output interupt with an input one. Usually this will cause
the serial driver to hang up. If you cure this by having one interupt
slot for each task things improve, but if you wish for a task to handle
more than one interrupt, such as the tty driver with input and output,
perhaps to multiple lines, then you have to change the way messages are
queued. We use one slot for each task * maximum number of interrups each
task can accept, which is kind of wasteful, but I can't be bothered to
rewrite it since it works. Even with this done we have GREAT difficulty
handling any signifant load on the serial lines. We have found 2400 baud
to the highest we can cope with. I guess a PC AT may do a bit better, but
don't expect wonders

John.

---------------------------------
John Vaudin: arthur@uk.ac.warwick