This is the mail archive of the ecos-bugs@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug 21968] select does not work on stdin


Please do not reply to this email. Use the web interface provided at:
http://bugs.ecos.sourceware.org/show_bug.cgi?id=21968

--- Comment #7 from Ken <kenkyee@excite.com> 2012-11-19 16:01:56 GMT ---
> Where is it locked? What's the backtrace when you interrupt it from a debugger?

The backtrace when I hit the stop button in Insight is:
Cyg_HardwareThread::thread_entry(Cyg_Thread*)
Cyg_HardwareThread::thread_entry(Cyg_Thread*)
ConsoleTask() <--- this is my console thread
read(int, void* size_t)  <-- it went past the select and is blocked here
readwritev(int, cyg_iovec const*, int, int)
dev_fo_read(CYG_FILE_TAG*, CYGUIO_TAG*)
cyg_io_read
tty_read
cyg_io_read
serial-read
haldiag_getc
hal_if_diag_read_char
__call_COMM_IF_GETC
cyg_hal_plf_serial_getc
cyg_hal_plf_serial_getc_nonblock

Ironically, it ends up in a nonblocking function that blocks :-)


> That seems to tell me that you're trying to use select with a HAL diagnostic
> channel as your stdin. Don't do that. The HAL diagnostic channel is there for
> debug only for simple output. It is polled only with interrupts off. Use a

The problem is, with this board, we're short one port.  It has 3 serial ports. 
Two are used for system usage (modem and board-board communication).  The 3rd
is our console port which we sent stdin/stdout to.  eCos has a diag port where
Assert messages are printed and we'd prefer that to go to the stdout port as
well since we can't catch them and save them in our logs...unfortunately
disabling the ROM monitor doesn't seem to help...it still seems to want to do
blocking diag calls to the same port we're sharing stdin/stdout to.

Sounds like we have to write a dummy serial port driver that writes the Assert
to a known location in memory instead of having it dump to the stdin/stdout
port?


> What port is this?

It's a port to a board based on an archaic 10yr old Atmel AT91M55800A chip that
Atmel is no longer recommending for new designs :-P


> what is fileno(stdin) in your environment?

Matches what it should be according to the POSIX API..0 which matches the
STDIN_FILENO macro

-- 
Configure bugmail: http://bugs.ecos.sourceware.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]