During initialization of the xterm the SystemC event,
ioEvent
is allocated:
ioEvent = new sc_core::sc_event();
When ioHandler
is called in response to a Linux
SIGIO
event, it does not know which pseudo-TTY
was responsible. The file descriptor responsible is identified by
using an operating system select
call. Using
the mappings in instList
, the corresponding class
instance can be identified and its ioEvent
notified.
for( Fd2Inst *cur = instList; cur != NULL ; cur = cur->next ) { if( FD_ISSET( cur->fd, &readFdSet )) { (cur->inst)->ioEvent->notify(); } }
This event then allows the xtermThread
to run
and read a character.