Mailinglist Archive: opensuse (3175 mails)
| < Previous | Next > |
Re: [opensuse] Elevator Question
- From: Roger Oberholtzer <roger@xxxxxx>
- Date: Fri, 13 Apr 2007 11:16:12 +0200
- Message-id: <1176455772.30487.40.camel@xxxxxxxxxxxx>
On Thu, 2007-04-12 at 10:44 -0600, Bill Anderson wrote:
> Changing the HZ to 1000 would only impact on tasks running in the
> process context. The top-half of the interrupt handler runs in interrupt
> context. During the initial processing of an interrupt, the handler
> suspends other interrupts on the same IRQ. Remember this is character
> I/O, so there is going to be an interrupt for each character. The
> buffering of the data for a user application occurs in the bottom half
> of the interrupt handler.
> I forgot to ask if the GPS application reads the raw serial port, or
> uses a kernel module for gathering the data.
Depends on what you mean by raw. We use /dev/ttySx, and configure the
port with termios. Then we set it up so we get a SIGIO when there is a
complete line, and use a read() call to get the characters. I wonder if
the interrupt is per-character. Given that the 16550 chip buffers 16
characters. I guess I could check /proc/interrupts on the serial port
and see.
Does the serial I/O stuff run in the kserio kernel thread? If so, I am
guessing that is the bottom half sort of stuff. I looked at the serio.c
source and it was not obvious to me as it seemed mainly to be a resource
controller more than the actual character processor.
--
Roger Oberholtzer
OPQ Systems / Ramböll RST
Ramböll Sverige AB
Kapellgränd 7
P.O. Box 4205
SE-102 65 Stockholm, Sweden
Tel: Int +46 8-615 60 20
Fax: Int +46 8-31 42 23
--
To unsubscribe, e-mail: opensuse+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse+help@xxxxxxxxxxxx
> Changing the HZ to 1000 would only impact on tasks running in the
> process context. The top-half of the interrupt handler runs in interrupt
> context. During the initial processing of an interrupt, the handler
> suspends other interrupts on the same IRQ. Remember this is character
> I/O, so there is going to be an interrupt for each character. The
> buffering of the data for a user application occurs in the bottom half
> of the interrupt handler.
> I forgot to ask if the GPS application reads the raw serial port, or
> uses a kernel module for gathering the data.
Depends on what you mean by raw. We use /dev/ttySx, and configure the
port with termios. Then we set it up so we get a SIGIO when there is a
complete line, and use a read() call to get the characters. I wonder if
the interrupt is per-character. Given that the 16550 chip buffers 16
characters. I guess I could check /proc/interrupts on the serial port
and see.
Does the serial I/O stuff run in the kserio kernel thread? If so, I am
guessing that is the bottom half sort of stuff. I looked at the serio.c
source and it was not obvious to me as it seemed mainly to be a resource
controller more than the actual character processor.
--
Roger Oberholtzer
OPQ Systems / Ramböll RST
Ramböll Sverige AB
Kapellgränd 7
P.O. Box 4205
SE-102 65 Stockholm, Sweden
Tel: Int +46 8-615 60 20
Fax: Int +46 8-31 42 23
--
To unsubscribe, e-mail: opensuse+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse+help@xxxxxxxxxxxx
| < Previous | Next > |