Max Dmitrichenko wrote:
В сообщении от 22 Июнь 2007 11:31 Ed написал(a):Max Dmitrichenko wrote:если при поднятом ppp-соединении модем ложит cd, то pppd это игнорирует. как же так? ;)Есть мнение, что при этом должен закрыться дескриптор того tty-устройства, через которое работает pppd.не закрывается. в какую сторону копать?В сторону ядра. Файл ppp_async.c - для PPP, файл serial_core.c и 8250.c для того, чтобы смотреть, как влияет состояние линий.
спасибо за подсказку. с первого взгляда причина нашлась. в serial_core.h есть: static inline void uart_handle_dcd_change(struct uart_port *port, unsigned int status) { struct uart_info *info = port->info; port->icount.dcd++; #ifdef CONFIG_HARD_PPS if ((port->flags & UPF_HARDPPS_CD) && status) hardpps(); #endif if (info->flags & UIF_CHECK_CD) { if (status) wake_up_interruptible(&info->open_wait); else if (info->tty) tty_hangup(info->tty); } } 8250.c дергает эту функцию. у меня же используется ftdi_sio, там ничего похожего нет. на http://ftdi-usb-sio.sourceforge.net/ в todo висит:Implement hangup (requires a check of the status bytes to see if CD is dropped and if the line is currently not in CLOCAL send a hangup)