Библиотека сайта rus-linux.net
Модули ядра Linux
Проект книги
Олег Цилюрик,
редакция 4.96
10.11.2011г.
Содержание
Исходный код и замеченные опечатки
2. Беглый взгляд на программирование модуля
Библиотечный и системный вызов из процесса
Возможен ли системный вызов из модуля?
Взаимодействие модуля с уровнем пользователя
Подсистема X11, терминал и текстовая консоль
Пример использования ассемблерного кода
Как собрать одновременно несколько модулей?
Как собрать модуль и использующие программы к нему?
Как собрать модуль из нескольких объектных файлов?
Нужно ли перекомпилировать ядро?
Драйверы: интерфейс устройства
Управляющие операции устройства
Множественное открытие устройства
Счётчик ссылок использования модуля
Неблокирующий ввод-вывод и мультиплексирование
Путь пакета сквозь стек протоколов
Динамическое выделение участка
Динамические структуры и управление памятью
Модуль использующий динамические структуры
Сложно структурированные данные
Источник прерываний системного таймера
Дополнительные источники информации о времени
Три класса задач во временной области.
Измерения временных интервалов
Время и диспетчирование в ядре
Критические секции кода и защищаемые области данных
Условные переменные и ожидание завершения
Атомарные переменные и операции
Арифметические атомарные операции
Локальные переменные процессора
Сериальные (последовательные) блокировки
Инверсия и наследование приоритетов
Предписания порядка выполнения
Общая модель обработки прерывания
Регистрация обработчика прерывания
Отображение прерываний в /proc
Обработчик прерываний, верхняя половина
Отложенная обработка, нижняя половина
Отложенные прерывания (softirq)
Очереди отложенных действий (workqueue)
7. Обслуживание периферийных устройств
Подключение к линии прерывания
8. Более экзотические возможности
Операции I/O пространства пользователя
Отдельные отладочные приёмы и трюки
Модуль исполняемый как разовая задача
Интерфейсы пространства пользователя к модулю
Комплементарный отладочный модуль
Некоторые мелкие советы в завершение
Используйте естественные POSIX тестеры
Приложения
Приложение А : сборка и установка ядра
Приложение Б: Краткая справка по утилите make
Приложение В: Пример - открытые VoIP PBX: Asterisk, FreeSwitch, и другие
Интерфейс устройств zaptel/DAHDI
Приложение Г: Тесты распределителя памяти
Книга в формате OpenDocument (ODT, 346 599 байт)
Книга в формате PDF (1 519 449 байт)
20.12.2011 О.И.Цилюрик подготовил обновленный вариант своей книги, теперь под названием "Программирование модулей ядра Linux":
- сделано достаточно много исправлений по замечаниям читателей (в одном случае это потребовало переписывания 3-х страниц текста);
- добавлена совершенно новая глава о работа с файлами из ядра;
- добавлена очень важная глава о деталях экспорта символов ядра для связывания модулей, и, в частности, о том, как в модуле использовать имена, не экспортируемые ядром;
- расширена библиография;
- существенно обновлены примеры к книге.
Версию книги от 15 декабря 2011 г. (редакция 3.111) вы можете скачать по следующим ссылкам:
в формате ODT (размер файла 393 150 байт).
в формате PDF (размер файла 1 315 600 байт).
обновленный файл примеров к книге Kexamples.BOOK.111.tgz (размер файла 3 537 785 байт).
28.02.2012 О.И.Цилюрик подготовил обновленный вариант приложения к своей книге "Программирование модулей ядра Linux". В примерах, кроме улучшения рекурсивной сборки, сделано много подчисток + всё проверено, теперь можете из корня дерева разархивированного сделать:
$ make $ make cleanчтоб собрались все примеры за раз.
make clean
- не должен вас смущать: он потрёт только
промежуточные и временные файлы.
Для полной очистки дерева в исходное состояние (только исходные коды):
$ make discleanВ архиве заметно больше примеров, чем в последних выложенных редакциях текста, это примеры, отработанные за прошедшее время.
Обновленный файл примеров к книге Kexamples.144.tgz (размер файла 809 769 байт).