serial-port: warn if ioctl(TIOCSSERIAL) fails to set closing_wait
Prints out a warning if ioctl(TIOCSSERIAL) fails to set closing_wait to none. This helps debug issues when a serial driver does not support or properly handle closing_wait, which may cause closing of the serial port to block.
This commit is contained in:

committed by
Aleksander Morgado

parent
f0490b4fff
commit
dd2b467262
@@ -937,7 +937,9 @@ mm_serial_port_open (MMSerialPort *self, GError **error)
|
||||
*/
|
||||
if (ioctl (priv->fd, TIOCGSERIAL, &sinfo) == 0) {
|
||||
sinfo.closing_wait = ASYNC_CLOSING_WAIT_NONE;
|
||||
ioctl (priv->fd, TIOCSSERIAL, &sinfo);
|
||||
if (ioctl (priv->fd, TIOCSSERIAL, &sinfo) < 0)
|
||||
mm_warn ("(%s): couldn't set serial port closing_wait to none: %s",
|
||||
device, g_strerror (errno));
|
||||
}
|
||||
|
||||
g_get_current_time (&tv_end);
|
||||
@@ -1027,7 +1029,9 @@ mm_serial_port_close (MMSerialPort *self)
|
||||
if (sinfo.closing_wait != ASYNC_CLOSING_WAIT_NONE) {
|
||||
mm_warn ("(%s): serial port closing_wait was reset!", device);
|
||||
sinfo.closing_wait = ASYNC_CLOSING_WAIT_NONE;
|
||||
(void) ioctl (priv->fd, TIOCSSERIAL, &sinfo);
|
||||
if (ioctl (priv->fd, TIOCSSERIAL, &sinfo) < 0)
|
||||
mm_warn ("(%s): couldn't set serial port closing_wait to none: %s",
|
||||
device, g_strerror (errno));
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user