/*===========================================================================* * Terminal Task * *===========================================================================* * Written by : Martin Bajgar * * Last update: 04-06-1997 * *===========================================================================*/ // neni dodelano je treba rozebrat nastavovaci zpravu dopnit pripraveny kod /*===========================================================================* * do_ioctl * *===========================================================================*/ /* Perform an IOCTL on this terminal */ PRIVATE void do_ioctl(struct tty_struct *tp, message *m_ptr) { struct tty_params paramsp; struct tty_ctrlchars paramsc; struct rs232_params params232; switch (m_ptr->m_request) { case TIOCSETP: // nastaveni erase, kill znaku a mode flags sys_copy(m_ptr->m_proc_nr,D,m_ptr->m_address,TTY,D,(vir_bytes) ¶msp,4); //vytahnu si 4 byte tp->tty_erase = paramsp.tty_erase; tp->tty_kill = paramsp.tty_kill; tp->tty_mode = paramsp.tty_mode; tp->tty_discipline = paramsp.tty_discipline; break; case TIOCSETC: // nastaveni znaku pro intr, quit, xon, xoff, eof sys_copy(m_ptr->m_proc_nr,D,m_ptr->m_address,TTY,D,(vir_bytes)¶msc,sizeof(paramsc)); tp->tty_intr = paramsc.tty_intr; tp->tty_quit = paramsc.tty_quit; tp->tty_xon = paramsc.tty_xon; tp->tty_xoff = paramsc.tty_xoff; tp->tty_eof = paramsc.tty_eof; break; case TIOCGETP: // cteni erase, kill chars and mode flags paramsp.tty_erase = tp->tty_erase; paramsp.tty_kill = tp->tty_kill; paramsp.tty_mode = tp->tty_mode; paramsp.tty_discipline = tp->tty_discipline; sys_copy(TTY,D,(vir_bytes)¶msp,m_ptr->m_proc_nr,D,m_ptr->m_address,sizeof(paramsp)); break; case TIOCGETC: // cteni znaku pro intr, quit, xon, xoff, eof paramsc.tty_intr = tp->tty_intr; paramsc.tty_quit = tp->tty_quit; paramsc.tty_xon = tp->tty_xon; paramsc.tty_xoff = tp->tty_xoff; paramsc.tty_eof = tp->tty_eof; sys_copy(TTY,D,(vir_bytes)¶msc,m_ptr->m_proc_nr,D,m_ptr->m_address,sizeof(paramsc)); break; case SETRS232: sys_copy(m_ptr->m_proc_nr,D,m_ptr->m_address,TTY,D,(vir_bytes)¶ms232,sizeof(struct rs232_params)); tp->rs232=params232; switch (m_ptr->m_tty_line) { case RS232LINE1: init(1,tp->rs232.stop_bity,tp->rs232.rychlost_prenosu,tp->rs232.parita); break; case RS232LINE2: init(2,tp->rs232.stop_bity,tp->rs232.rychlost_prenosu,tp->rs232.parita); break; } } //switch m_ptr->m_request task_reply(OK,OK,tp->tty_incaller, tp->tty_inproc); }