Hi, term has currently two bottom handlers, one for Mach terminal devices, and one for ptyios. I could make good use of elaborations on some of the involved issues when going to a user space console.
The mach terminal device interface is also used for the console device, although it of course does not implement any of the status calls. This is why STOP (^S) and START (^Q) don't work. The pty interface does also not handle START and STOP. It stores the state in flags, but it does not make use of it in any way. START and STOP are just one example for stuff that concerns the bottom handler. There is a third type, TERM_ON_HURDIO, that is not implemented yet. It seems to me that this is what I need if I want to use term with a colortext translator that supports keyboard input (I'd call it /dev/vcon or so). I have started hacking together support for TERM_ON_HURDIO (I coined it fileio before I found out about the symbol), but pretty aimlessly right now. I'd be glad if you could share with me any ideas you had about it. Read and write is clear enough (using io_read and io_write on the underlying file node), but I have basically two problems: The bottom line interface is not documented, so I have to guess my way through it, and second, I am not yet sure what to do about all the state, like START and STOP. Is this the responsibility of the bottom handler, or the underlying filesystem, and if the latter, how do we exchange the state through the i/o interface. I am not sure how virtual consoles are going to be implemented. It seems to me that /dev/console is always the currently active console (at least this it is on Linux), so this port needs to be managed by the colortext (or vcon or however we are going to name it) translator. However, how can it point back to the terminal translator currently in use? It seems that term needs to advertise its own port to colortext before everything can work. Is this correct? For reference, here is the structure that defines the bottom half. For example, there is suspend_physical_output() which supposedly implements STOP, and start_output(), which resumes it (but does other things as well). /* Functions a bottom half defines */ struct bottomhalf { void (*start_output) (void); void (*set_break) (void); void (*clear_break) (void); void (*abandon_physical_output) (void); void (*suspend_physical_output) (void); int (*pending_output_size) (void); void (*notice_input_flushed) (void); error_t (*assert_dtr) (void); void (*desert_dtr) (void); void (*set_bits) (void); void (*mdmctl) (int, int); int (*mdmstate) (void); }; Thanks, Marcus -- `Rhubarb is no Egyptian god.' Debian http://www.debian.org [EMAIL PROTECTED] Marcus Brinkmann GNU http://www.gnu.org [EMAIL PROTECTED] [EMAIL PROTECTED] http://www.marcus-brinkmann.de _______________________________________________ Bug-hurd mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-hurd