Глава 2. Магистрали взаимодействия пользователь - ядро

Содержание

Глава 2. Магистрали взаимодействия пользователь - ядро
Технические требования
Подходы к обменам/ взаимодействию драйвера ядра с с прикладным приложением C пространства пользователя
Взаимодействие через файловую систему процессов (procfs)
Основы файловой системы procfs
Каталоги в procfs
Основная цель, отведённая procfs
procfs вне рамок авторов драйвера
Применение procfs для взаимодействия с определённым пространством пользователя
Базовые API procfs
Четыре файла procfs, которые мы создадим
Испытание динамического элемента procfs управления debug_level
Динамическое управление debug_level через procfs
Несколько API procfs misc
Взаимодействие через файловую систему sys (sysfs)
Создание (псевдо) файла sysfs в коде
Создание образца устройства платформы
Устройства платформы
Пробуем всё это вместе - настройка атрибутов устройства и создание соответствующего файла sysfs
Собственно код для реализации нашего файла sysfs и его обратных вызовов
Правило "одно значение на файл sysfs"
Взаимодействие через файловую систему debug (debugfs)
Проверка наличия debugfs
Поиск документации API debugfs
Пример взаимодействия с debugfs
Создание и применение первого файла debugfs
Создание и применение второго файла debugfs
Вспомогательный API debugfs для работы с глобальыми численными значениями
Удаление псевдо файла (файлов) debugfs
Наблюдаем ошибку ядра - Упс!
debugfs - реальные пользователи
Взаимодействие через сокеты netlink
Преимущества применения сокетов
Разбираемся с тем что представляет собой сокет netlink
Пишем приложение сокета netlink пространства пользователя
Пишем код сокета netlink пространства ядра как модуль ядра
Пробуем свой проект взаимодействия netlink
Взаимодействие через системные вызовы ioctl
Применение ioctl в пространствах пользователя и ядра
Пространство пользователя - использование системного вызова ioctl
Пространство ядра - использование системного вызова ioctl
ioctl в качестве интерфейса отладки
Сопоставление методов взаимодействия - таблица
Выводы
Вопросы
Дальнейшее чтение

Технические требования

Подходы к обменам/ взаимодействию драйвера ядра с с прикладным приложением C пространства пользователя

Взаимодействие через файловую систему процессов (procfs)

Основы файловой системы procfs

Каталоги в procfs

Основная цель, отведённая procfs

procfs вне рамок авторов драйвера

Применение procfs для взаимодействия с определённым пространством пользователя

Базовые API procfs

Четыре файла procfs, которые мы создадим

Испытание динамического элемента procfs управления debug_level

Динамическое управление debug_level через procfs

Несколько API procfs misc

Взаимодействие через файловую систему sys (sysfs)

Создание (псевдо) файла sysfs в коде

Создание образца устройства платформы

Устройства платформы

Пробуем всё это вместе - настройка атрибутов устройства и создание соответствующего файла sysfs

Собственно код для реализации нашего файла sysfs и его обратных вызовов

Правило "одно значение на файл sysfs"

Взаимодействие через файловую систему debug (debugfs)

Проверка наличия debugfs

Поиск документации API debugfs

Пример взаимодействия с debugfs

Создание и применение первого файла debugfs

Создание и применение второго файла debugfs

Вспомогательный API debugfs для работы с глобальыми численными значениями

Удаление псевдо файла (файлов) debugfs

Наблюдаем ошибку ядра - Упс!

debugfs - реальные пользователи

Взаимодействие через сокеты netlink

Преимущества применения сокетов

Разбираемся с тем что представляет собой сокет netlink

Пишем приложение сокета netlink пространства пользователя

Пишем код сокета netlink пространства ядра как модуль ядра

Пробуем свой проект взаимодействия netlink

Взаимодействие через системные вызовы ioctl

Применение ioctl в пространствах пользователя и ядра

Пространство пользователя - использование системного вызова ioctl

Пространство ядра - использование системного вызова ioctl

ioctl в качестве интерфейса отладки

Сопоставление методов взаимодействия - таблица

Выводы

Вопросы

Дальнейшее чтение