Я пытаюсь восстановить драйвер устройства Linux из предыдущего выпуска (4.19) в недавних ядрах, а именно 6.1.22 на встроенных платформах, Arm64 Arch.
Драйвер управляет устройством tty. /p>
Следующий код Попробуйте обобщить использование для поддержания: < /p>
Код: Выделить всё
char device_name = "/dev/my-tty";
int open_mode = O_RDWR | O_NOCTTY;
struct file * file = filp_open(device_name, open_mode, 0);
/* ... */
struct ktermios *ntermios;
int ldisc;
/* ... something on ldisc and ntermios ... */
fs = get_fs();
set_fs(get_ds());
int retval = file->f_op->unlocked_ioctl(file, TCSETS, (unsigned long)&ntermios));
set_fs(fs);
/* ... */
fs = get_fs();
set_fs(get_ds());
int retval = file->f_op->unlocked_ioctl(file, TIOCSETD, (unsigned long)&ldisc));
set_fs(fs);
/* ... */
Код: Выделить всё
EFAULT< /code> /плохой адрес).
IS IS в присутствии функции copy_from_user () < /code>, ... что просто не удается. < /p>
Поиск в коде и На нескольких форуме я нашел несколько подробностей о «set_fs ()»-удаление танца, но ничего о решении или альтернативных подходах. Следующие действия:
[*]https://lwn.net/articles/832121/
[*] Исключение force_uaccess_begin () в linux Ядро 5.19 /6.0? < /li>
Как использовать ioctl () из пространства ядра в Linux? () В основном вопросы: < /p>
Как я могу Возьмите с собой устройство, как TTY, из пространства ядра?
Это возможно? > -Dance? Подход, если таковой имеется, совершенно другой? /> < /ul>
Любой комментарий приветствуется. T осознал тип возможного решения/раунда.
Подробнее здесь: https://stackoverflow.com/questions/794 ... -and-for-6
Мобильная версия