Wiki

Энциклопедия разработчика модулей ядра Linux (Linux Kernel Module Programming Guide)

The Linux Kernel Module Programming Guide

Авторы: Peter Jay Salzman, Michael Burian, Ori Pomerantz

Copyright 2001, Peter Jay Salzman.

2004-05-16 ver 2.6.0

Перевод: Андрей Киселёв (kis_an [at] linuxgazette [dot] ru)

Оригинал: Russian Linux Gazette

Оригинальная версия была опубликована на сайте проекта The Linux Documentation Project.

Данная книга распространяется на условиях Open Software License, version 1.1. Полный текст лицензии вы сможете найти по адресу http://opensource.org/licenses/osl.php .

Эта книга распространяется в надежде на то, что она будет вам полезна, но без каких-либо гарантий, в том числе и без подразумеваемых гарантий высокого спроса или пригодности для специфических целей.

Авторы приветствуют широкое распространение этой книги как для персонального, так и для коммерческого пользования, при условии соблюдения вышеупомянутого примечания относительно авторских прав, а так же при условии, что распространитель твердо придерживается условий Open Software License. Вы можете копировать и распространять эту книгу как бесплатно, так и с целью получения прибыли. От авторов не требуется никакого явного разрешения для воспроизводства этой книги на любом носителе, будь то твердая копия или электронная.

Производные работы и переводы этого документа должны размещаться на условиях Open Software License, а первоначальное примечание об авторских правах должно остаться нетронутым. Если вы добавили новый материал в эту книгу, то вам следует сделать его общедоступным. Пожалуйста извещайте руководителя проекта (Peter Jay Salzman p@dirac.org>) о внесенных изменениях и дополнениях. Он объединит модификации и обеспечит непротиворечивость изменений документа.

Если Вы планируете издавать и распространять эту книгу на коммерческой основе, пожертвования, лицензионные отчисления и/или печатные копии будут высоко оценены автором и The Linux Documentation Project. Таким образом вы окажете поддержку свободному программному обеспечению и LDP. Если у вас появятся вопросы или предложения, пожалуйста пишите руководителю проекта по адресу, указанному выше.


Содержание
Предисловие
1. Об авторах
2. Нумерация версий и дополнительные примечания
3. Благодарности
1. Введение.
1.1. Что такое "Модуль Ядра"?
1.2. Как модули попадают в ядро?
1.2.1. Прежде, чем продолжить
2. Hello World
2.1. "Hello, World" (часть 1): Простейший модуль ядра.
2.1.1. Знакомство с printk()
2.2. Сборка модулей ядра
2.3. Hello World (часть 2)
2.4. Hello World (часть 3): Макроопределения __init и __exit
2.5. Hello World (часть 4): Вопросы лицензирования и документирования модулей
2.6. Передача модулю параметров командной строки
2.7. Модули, состоящие из нескольких файлов
2.8. Сборка модулей под существующее ядро
3. Дополнительные сведения
3.1. Модули ядра и прикладные программы
3.2. Функции, которые доступны из модулей
3.3. Пространство пользователя и пространство ядра
3.4. Пространство имен
3.5. Адресное пространство
3.6. Драйверы устройств
3.6.1. Старший и младший номер устройства
4. Файлы символьных устройств
4.1. Структура file_operations
4.2. Структура file
4.3. Регистрация устройства
4.4. Отключение устройства
4.5. chardev.c
4.6. Создание модулей для работы с разными версиями ядра
5. Файловая система /proc
5.1. Файловая система /proc: создание файлов, доступных для чтения
5.2. Файловая система /proc: создание файлов, доступных для записи
6. Работа с файлами устройств
7. Системные вызовы
8. Блокировка процессов
9. Замена printk
9.1. Замена printk
9.2. Управление индикаторами на клавиатуре
10. Планирование задач
11. Обработка прерываний
11.1. Обработка прерываний
11.2. Клавиатура на архитектуре Intel
12. Симметричная многопроцессорность
13. Заключение