Начиная с этого момента, мы входим в мир программистов ядра. В главе два вводится модуляризация, объясняющее секреты искусства и показываем рабочий код модулей. Глава 3 говорит о символьных драйверах которые могут быть прочитаны и написаны просто ради шутки. Использование памяти как основного аппаратного обеспечения доступного каждому для запуска примера кода без необходимости покупать особенное оборудование.
Техники отладки - эти жизненно важные инструменты для программиста представлены в Главе 4. В равной степени важно, для тех кто исследует согласованность управления современных ядер и пути улучшения. Глава 5 касается сама по себе с изложенными проблемами совместного доступа к ресурсам и вводит в механизмы Линукс по контролю совместимости.
Получив навыки отладки и управления совместимости мы переходим продвинутым возможностям символьных устройств, таким как блокирующие операции, использование системного вызова select, и важного ioctl вызова, эти темы предмет рассмотрения Главы 6.
Прежде чем вести дело с управлением аппаратного обеспечения мы анализируем немного больше программных интерфейсов ядра: Глава 7 показывает как время управляет ядром и Глава 8 объясняет распределение памяти.
Далее мы с фокусируемся над аппаратным обеспечением. Глава 9 описывает управление портами ввода\вывода и буферов памяти которые существуют в устройстве, после этого мы подходим к управлению прерываниями, в Главе 10. К сожалению, не каждый сможет запустить примеры кода в этой главе, потому что поддержка некоторого аппаратного обеспечения действительно необходимо для тестирования интерфейса прерываний. Мы попытались свести к минимуму поддержку аппаратного обеспечения, тем не менее вам понадобится простое аппаратное обеспечение, такое как стандартный параллельный порт, для работы с примером кода в этих главах.
Глава 11 включает использование типов данных в ядре и написание переносимого кода.
Вторая часть книги посвящена более развернутым темам. Мы начинаем глубже изучать внутренности ядра, в частности, особенные функциональные возможности периферийных шин. Глава 12 описывает в подробности написание драйверов для PCI устройств, и в главе 13 рассматриваем API для работы с USB устройствами.
Получив понятия о периферийных шинах, мы можем дать детальное рассмотрение модели устройств Линукс, эта абстракция слоя используется ядром для описания ресурсов управления аппаратного и программного обеспечения. Глава 14 смотрит в суть модели инфраструктуры устройства, начиная с ко-объективного типа и работы с ними. Описывается интеграция модели устройств с реальным аппаратным обеспечением, тогда используя эти знания раскрывают такие темы как устройства подключаемые на горячую и управление питанием.
В главе 15, мы отвлекаемся на управление памятью в Линукс. Эта глава показывает как распределять память ядра в пользовательском пространстве (системный вызов mmap), распределение пользовательской памяти, в пространстве ядра (с get_user_pages) и также как распределять ту или иную разновидность памяти внутри пространства устройства (выполнять операции прямого управления доступом к памяти [DMA] ).
Наше понимание памяти будет полезно в следующих двух главах, которые охватывают другие более важные классы устройств. Глава 16 вводит блочные драйвера и показывают чем они отличаются от символьных драйверов мы сделали так далеко. Затем в главе 17 даем написание сетевых драйверов. Мы заканчиваем дискуссией о серийный драйверах и библиографией.
Переведено на сайте www.notabenoid.com
http://notabenoid.com/book/11832/37931
Внимание! Этот перевод, возможно, ещё не готов,
так как модераторы установили для него статус
"перевод редактируется"
Комментариев нет:
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.