2013-02-12 57 views
0

这个问题真的只是为了满足我对this问题的好奇心。虽然我现在正在使用另一种解决方案,但最初的问题似乎归结为TIOCMGET未实施的事实,我想知道一些原因。TIOCMGET应该在哪里实施?

不幸的是,我没有发现很多有用的信息,只是通过Google搜索,我发现tty_ioctl手册页(第一个结果)非常难以理解。

那么,究竟是TOCMGET,它在哪里实现,以及mono可能在哪里寻找并找不到它?

+0

手册页暗示它至少在C级实施。 – 2013-02-12 10:53:32

回答

1

它在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调制解调器驱动程序,但普通终端不会这样做,因为它们不是调制解调器。