termios+PTY=real-time killer? (was Re: Interrupt Latency on PPC)

Fernando RUIZ CASAS (E-mail) fernando.ruiz at ctv.es
Mon Nov 19 08:53:45 UTC 2001


My own implementation (a very particular) ot PTY is a way to
give to shell() a tcp/ip solution but with a standard conection telnet
client.

I couldn't think in this kind of problems when the implementation.

What is a PTY server?

Maybe is the real PTY (unix like) implementation with several layers
and several task envolved?

My goal was only build a remote console. The real pty implementation is
too complicated for my goal. But if this is a common goal I can think it.

>  + Does this mean that the PTY  is doing socket IO inside
>    an interrupt?  If so, I suspect this is very dangerous.
>    Eric Norum should comment.

The PTY don't make use of interrupts to work.
It's only a termios driver callbacks in POLL (not interrupt) mode.
It's the socket implementation who does the wait (getchar()) and more.

Fernando RUIZ CASAS
home:correo at fenando-ruiz.com
work:fernando.ruiz at ctv.es

-----Mensaje original-----
De: Joel Sherrill [mailto:joel.sherrill at oarcorp.com]
Enviado el: sabado, 17 de noviembre de 2001 18:41
Para: Till Straumann
CC: Fernando RUIZ CASAS (E-mail); 'RTEMS List'
Asunto: Re: termios+PTY=real-time killer? (was Re: Interrupt Latency on
PPC)




Till Straumann wrote:
>
> "Fernando RUIZ CASAS (E-mail)" wrote:
>
> > Hi.
> >  Is the PTY driver the pty.c file placed close to telnetd.c?
> >
> >  This pty driver doesn't make any special thing with termios.
> >  If the tcp/ip works fine the driver also.
> >
>
> We are talking about the very one. I agree, pty.c does not do anything
> special. However, termios [under some circumstances] calls
> pty's pollWrite() function with _Interrupts_disabled_:
>
>   rtems_interrupt_disable(level);
>   ...
>   tty->device.write(...);
>   ...
>   rtems_interrupt_enable(level);
>
> Because PTY's pollWrite() does socket/IO, I guess it could even
> block! - Or am I missing something?
>
> I suppose that termios could relax its interrupt-disabling policy
> in task driven mode. PTY should then probably be run in task
> driven or polled mode.

Another more general solution may be for there to be a PTY
server that processes requests.  I don't know if having
a single task to do all PTY requests is good or bad though.

I have a couple of more general questions.

  + Does this mean that the PTY  is doing socket IO inside
    an interrupt?  If so, I suspect this is very dangerous.
    Eric Norum should comment.
  + Is the interrupt disable necessary in general?

> -- Till
>
> >
> > Perhaps I'm speaking about other oignons.
> >
> > Fernando RUIZ CASAS
> > home:correo at fenando-ruiz.com
> > work:fernando.ruiz at ctv.es
> >
> > -----Mensaje original-----
> > De: till at MAILBOX.SLAC.Stanford.EDU
> > [mailto:till at MAILBOX.SLAC.Stanford.EDU]En nombre de Till Straumann
> > Enviado el: viernes, 16 de noviembre de 2001 2:26
> > Para: RTEMS List; joel.sherrill at oarcorp.com
> > Asunto: Re: Interrupt Latency on PPC
> >
> > Things get _really_ bad when the PTY driver is
> > heavily used. I measured IRQ latencies of ~200us
> > during quite short measurement intervals (remember,
> > we're doing statistics here). This is in the order of
> > 100 times the average.
> >
> > I guess that the problem is caused by termios.c
> > which under some circumstances calls the
> > device's 'write' callback with _IRQs_disabled_.
> > The PTY driver's write callback is a
> >
> > write(socket,...)
> >
> > outchh!
> >
> > Is there a termios expert out there who could explain
> > to me what really needs to be protected from interrupts?
> >
> > Also, shouldn't the PTY driver run in task driven
> > (as opposed to the current IRQ driven) mode?
> >
> > -----Mensaje original-----
> > De: till at MAILBOX.SLAC.Stanford.EDU
> > [mailto:till at MAILBOX.SLAC.Stanford.EDU]En nombre de Till Straumann
> > Enviado el: viernes, 16 de noviembre de 2001 2:26
> > Para: RTEMS List; joel.sherrill at oarcorp.com
> > Asunto: Re: Interrupt Latency on PPC
> >
> > Things get _really_ bad when the PTY driver is
> > heavily used. I measured IRQ latencies of ~200us
> > during quite short measurement intervals (remember,
> > we're doing statistics here). This is in the order of
> > 100 times the average.
> >
> > I guess that the problem is caused by termios.c
> > which under some circumstances calls the
> > device's 'write' callback with _IRQs_disabled_.
> > The PTY driver's write callback is a
> >
> > write(socket,...)
> >
> > outchh!
> >
> > Is there a termios expert out there who could explain
> > to me what really needs to be protected from interrupts?
> >
> > Also, shouldn't the PTY driver run in task driven
> > (as opposed to the current IRQ driven) mode?
> >
> > -- Till.

--
Joel Sherrill, Ph.D.             Director of Research & Development
joel at OARcorp.com                 On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
   Support Available             (256) 722-9985




More information about the users mailing list