Перевод книги от RUVDS: Пособие по программированию модулей ядра Linux

tc9noz0wqptrl4sikhpnjwd1xb8.png

Программирование модулей ядра Linux. Ч.1
В первой части мы разберём, что такое модули ядра, рассмотрим необходимые подготовительные этапы для их создания и в завершении по традиции напишем первый простейший модуль «Hello world», попутно разобрав вопросы лицензирования, передачу аргументов командной строки и прочие нюансы.

Программирование модулей ядра Linux. Ч.2
В первой половине текущей части мы подробнее разберём структуру и принцип действия модулей, узнаем, чем отличается пространство пользователя от пространства ядра, а также немного поговорим об использовании памяти. Вторая же половина будет посвящена одному из типов модулей — драйверам устройств, основы работы с которыми мы также подробно рассмотрим.

Программирование модулей ядра Linux. Ч.3
Продолжаем серию статей по созданию модулей ядра. В текущей части мы разберём работу с файловой системой /proc, взаимодействие с модулями при помощи sysfs, а также работу с файлами устройств.

Программирование модулей ядра Linux. Ч.4
Тема этой части — системные вызовы. В ней вы познакомитесь с этим понятием на примере создания собственной функции для открытия файлов, которая будет подменять собой исходную sys_open, а также следить за конкретным пользователем, информируя нас об открываемых им файлах.

Программирование модулей ядра Linux. Ч.5
В ней мы разберёмся, как в ядре реализована совместная работа процессов и потоков, узнаем, какую роль в этом играет режим ожидания (sleep), рассмотрим возможные способы избежания коллизий и взаимных блокировок, а также познакомимся с назначением и использованием атомарных операций.

Программирование модулей ядра Linux. Ч.6
Познакомимся с понятием tty, представляющим альтернативу макросу print, напишем модуль для мигания светодиодами клавиатуры, а также разберём тему планирования задач с помощью тасклетов и очередей заданий.

Программирование модулей ядра Linux. Ч.7
Заключительная часть. Здесь мы рассмотрим обработку прерываний, криптографию, стандартизацию интерфейсов с помощью модели устройства, а также разберём принцип работы драйвера виртуального устройства ввода и возможность внесения в модуль некоторой оптимизации. В завершение же укажем на пару неявных, но важных нюансов, а также дадим рекомендации по дальнейшему погружению в тему программирования ядра.

© Habrahabr.ru