This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: gets() and task scheduling stopped
- From: Jesper Skov <jskov at redhat dot com>
- To: Sam Sortais <sams at myself dot com>
- Cc: eCos Discuss <ecos-discuss at sources dot redhat dot com>
- Date: 10 Jan 2002 10:44:23 +0100
- Subject: Re: [ECOS] gets() and task scheduling stopped
- References: <20020110092252.58739.qmail@iname.com>
On Thu, 2002-01-10 at 10:22, Sam Sortais wrote:
[snip]
> 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