TIOCMGET应该在哪里实施?
问题描述:
这个问题真的只是为了满足我对this问题的好奇心。虽然我现在正在使用另一种解决方案,但最初的问题似乎归结为TIOCMGET未实施的事实,我想知道一些原因。TIOCMGET应该在哪里实施?
不幸的是,我没有发现很多有用的信息,只是通过Google搜索,我发现tty_ioctl手册页(第一个结果)非常难以理解。
那么,究竟是TOCMGET,它在哪里实现,以及mono可能在哪里寻找并找不到它?
答
它在drivers/tty/tty_io.c
它具有以下实现来实现:
/**
* tty_tiocmget - get modem status
* @tty: tty device
* @file: user file pointer
* @p: pointer to result
*
* Obtain the modem status bits from the tty driver if the feature
* is supported. Return -EINVAL if it is not available.
*
* Locking: none (up to the driver)
*/
static int tty_tiocmget(struct tty_struct *tty, int __user *p)
{
int retval = -EINVAL;
if (tty->ops->tiocmget) {
retval = tty->ops->tiocmget(tty);
if (retval >= 0)
retval = put_user(retval, p);
}
return retval;
}
,你从注释说明和代码,它只有在底层的终端驱动程序支持它,否则将返回EINVAL
工作。
有很多驱动程序支持它,例如isdn4linux
和各种GSM调制解调器驱动程序,但普通终端不会这样做,因为它们不是调制解调器。
手册页暗示它至少在C级实施。 – 2013-02-12 10:53:32