2013-02-12 91 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調制解調器驅動程序,但普通終端不會這樣做,因爲它們不是調制解調器。