Как «вызвать» драйвер ioctl из другого драйвера? - PullRequest
1 голос
/ 09 июля 2019

Программа пространства пользователя может изменить вывод RTS последовательного порта / UART, используя вызов ioctl.Например:

int RTS_flag = TIOCM_RTS;
ioctl(fd, TIOCMBIS, &RTS_flag);
ioctl(fd, TIOCMBIC, &RTS_flag);

Предположим, я хочу управлять выводом RTS из драйвера.Можно ли «позвонить» водителю, удерживающему tty, и попросить его контролировать пин-код для меня?(Вместо того, чтобы вычислять управляющие регистры конкретного устройства и считывать / записывать байты, не говоря уже о мгновенной поддержке всех микросхем UART, поддерживаемых драйверами ядра).

Как правильно поступить в этом направлении?

Например, в myDriver:

static const struct file_operations ecp_fileOps =
{
    .owner          = THIS_MODULE,
    .unlocked_ioctl = my_ioctl,
    .write      = 0,  
    .read       = 0,
    .poll       = 0,
    .open       = lirc_dev_fop_open,
    .release    = lirc_dev_fop_close,
    .llseek     = no_llseek,
};

static long ecp_ioctl(struct file *filep, unsigned int cmd, unsigned long arg)
{
    switch (cmd)
    {
        "Call" tty ioctl function...
    }
}

OS INFO

# uname -a
Linux ecp 4.4.127-1.el6.elrepo.i686 #1 SMP Sun Apr 8 09:44:43 EDT 2018 i686 i686 i386 GNU/Linux
# cat /etc/centos-release
CentOS release 6.6 (Final)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...