Авторизация

OpenID



Напомнить пароль
Регистрация
-->

Ядерное программированиеПишем первый драйвер

В этой статье я расскажу как написать модуль ядра для символьного устройства. Назовем его chardev. Это устройство будет выполнять несколько функций: нам будет предоставлена возможность открывать файл устройства на чтение функцией open() из другой программы и читать его содержимое утилитой cat. Устройство не будет поддерживать запись, но будет детектировать попытки обращения к нему на запись и возвращать ошибку. Файл устройства необходимо будет создать вручную и программа нас об этом предупредит. Читать дальше
  • +1
  • jack291
  • 02 октября 2011, 14:35

Ядерное программированиеФайлы символьныx устройств. Структура file_operatons и file

Структура file_operations определена в файле linux/fs.h и содержит указатели на функции драйвера, которые отвечают за выполнение различных операций с устройством. Например, практически любой драйвер символьного устройства реализует функцию чтения данных из устройства. Адрес этой функции, среди всего прочего, хранится в структуре file_operations. Ниже приводится определение структуры, взятое из исходных текстов ядра 2.6.30: Читать дальше
  • 0
  • jack291
  • 01 октября 2011, 14:18

Ядерное программированиеДрайверы устройств

Драйверы устройств являются одной из разновидностей модулей ядра. Они играют особую роль. Это настоящие «черные ящики», которые полностью скрывают детали, касающиеся работы устройства, и предоставляют четкий программный интерфейс для работы с аппаратурой. В Unix каждое аппаратное устройство представлено псевдофайлом (файлом устройства) в каталоге /dev. Этот файл обеспечивает средства взаимодействия с аппаратурой. Так, например, драйвер звуковой платы es1370.ko связывает файл устройства /dev/sound со звуковой платой Ensoniq IS1370. Пользовательское приложение, например mp3blaster может использовать для своей работы /dev/sound, ничего не подозревая о типе установленной звуковой платы. Читать дальше
  • 0
  • jack291
  • 01 октября 2011, 14:04

Ядерное программированиеПередача модулю параметров командной строки

Имеется возможность передачи модулю дополнительных параметров командной строки, но делается это не с помощью argc/argv.

Для начала вам нужно объявить глобальные переменные, в которые будут записаны входные параметры, а затем вставить макрос MODULE_PARAM(), для запуска механизма приема внешних аргументов. Значения параметров могут быть переданы модулю с помощью команд insmod или modprobe. Например: insmod mymodule.ko myvariable=5. Для большей ясности, объявления переменных и вызовы макроопределений следует размещать в начале модуля. Пример кода прояснит мое, по общему признанию, довольно неудачное объяснение.
Читать дальше
  • +1
  • jack291
  • 27 сентября 2011, 23:14

Ядерное программированиеКак грузится Linux?

Очень многие любят пользоваться вещами, не зная, как они устроены и работают. Но мы ведь не из них верно? Поэтому я задался вопросом — что происходит после включения компьютера и выбора соответствующего ядра в Grub. Читать дальше
  • 0
  • jack291
  • 24 сентября 2011, 22:35

Ядерное программированиеПрограммируем модули ядра Linux

Что такое модуль ядра?
Модуль ядра — это некий код, который может быть загружен и выгружен из ядра по мере необходимости. Модули ядра расширяют его функциональность без необходимости перезагрузки. Читать дальше
  • 0
  • jack291
  • 22 сентября 2011, 21:38


Блоги, Linux 2.6.35.30