1

これは、この質問の後の私の好奇心を満たすためだけのものです。現在、別のソリューションを使用していますが、元の問題はTIOCMGETが実装されていないことに起因しているようです。その理由について、少し知りたいと思います。

残念ながら、グーグルするだけではあまり有用な情報が見つかりませんでした。また、tty_ioctlのmanページ(最初の結果)はかなり理解しがたいものです。

では、TIOCMGETとは正確には何であり、どこに実装されているのでしょうか。また、monoがそれを探していて、見つけられない可能性があるのはどこでしょうか。

4

1 に答える 1

3

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ます。

やさまざまな GSM モデム ドライバなど、これをサポートする多くのドライバがありますがisdn4linux、通常の端末はモデムではないため対応しません。

于 2013-02-12T10:59:09.557 に答える