[ECOS] gets() and task scheduling stopped

Sam Sortais sams@myself.com
Thu Jan 10 10:22:00 GMT 2002

>Sam Sortais wrote:
>> For what I understand with gdb it seems to
>> be stuck at the bottom of this
>> sequence of calls gets() -> refill_Â
() ->
>> read() -> readwrite() ->
>> dev_fo_read() -> cyg_io_read() -> tty_read() ->cyg_io_read() ->
>> serial_read() -> haldiag_getc() -> HAL_DIAG_READ->Â

>> The scheduler is locked at many levels in
>> the previous calls. I was also
>> looking at a loop in tty_read() which is
>> done after a lockÂ
 but I do not
>> catch all the details of this low level
>> code.
>> I updated with the latest CVS to be sure it
>> was not another problem.
>> Has anybody else experienced gets() in
>> multithreaded environment ?

> You need to use an IO driver to get proper
> multithreaded behavior. The
> HAL keyboard driver is operating in polled
> mode only, causing the behavior you observe.

> The only IO device keyboard driver I see is > for the iPAQ. You need to
> write something similar for your platform.

> Jesper

The problem is that I load my application via
Redboot, so OK to write an IO driver for PC
keyboard now, but then how would it work when
the channel is the serial line or tcp/ip via
Redboot ? 
This is what I use all the time and it is much
more convenient than to go type on my target
keyboard. In the futur my target will have no
keyboard so how will I do a gets() at this
time ? Maybe we need something different than
a simple kbd IO driver, what would be your
suggestions ?

Thanks, Sam.

Sign-up for your own FREE Personalized E-mail at Mail.com

1 cent a minute calls anywhere in the U.S.!


More information about the Ecos-discuss mailing list