- Использование дерева каталогов исходных кодов ядра
- Читайте также
- 14.4.6. Удаление вершины дерева и удаление дерева: tdelete() и tdestroy()
- Совместное использование объектов ядра приложениями и службами
- Дерево исходных кодов ядра
- Компиляция вне дерева исходных кодов ядра
- Использование службы каталогов Active Directory Service Interface (ADSI)
- Инсталляция нового ядра и его использование
- 12.3. Совместное использование каталогов в Linux Mandrake
- 9.3.3. Использование двоичного дерева как справочной таблицы
- Роль кодов операций CIL
- Анализ кодов операций CIL
- 4.14.3. Использование Model Explorer для реорганизации дерева декомпозиции
- Модули внешних кодов
- Использование именованных сущностей вместо кодов символов
Использование дерева каталогов исходных кодов ядра
В идеале модуль является частью официального ядра и находится в каталоге исходных кодов ядра. Введение вашей разработки непосредственно в ядро может вначале потребовать больше работы, но обычно такое решение более предпочтительно.
На первом этапе необходимо решить, где именно будет находиться модуль в дереве исходных кодов ядра. Драйверы необходимо хранить в подкаталогах каталога drivers/, который находится в корне дерева исходных кодов ядра. Внутри этого каталога драйверы делятся на классы, типы и собственно на отдельные драйверы. Символьные устройства находятся в каталоге drivers/char/, блочные — в каталоге drivers/block/, устройства USB — в каталоге drivers/usb/. Эти правила не есть жесткими, так как многие устройства USB также являются и символьными устройствами. Но такая организация является понятной и четкой.
Допустим, что вы хотите создать свой подкаталог и ваш воображаемый драйвер разработан для удочки с числовым программным управлением, которая имеет интерфейс Fish Master XL 2000 Titanium для подключения к компьютеру. Следовательно, необходимо создать подкаталог fishing внутри каталога drivers/char/.
После этого необходимо добавить новую строку в файл Makefile, который находится в каталоге drivers/char/. Для этого отредактируйте файл drivers/char/Makefile и добавьте в него следующую запись.
Эта строка указывает системе компиляции, что необходимо войти в подкаталог fishing/ при компиляции модулей. Скорее всего, компиляция драйвера определяется отдельным конфигурационным параметром, например, CONFIG_FISHING_POLE (как создавать новые конфигурационные параметры, рассмотрено ниже в этой главе в разделе «Управление конфигурационными параметрами»). В этом случае необходимо добавить строку следующего вида.
И наконец, в каталоге drivers/char/fishing необходимо добавить новый файл Makefile, содержащий следующую строку.
При таких настройках система компиляции перейдет в каталог fishing/ и скомпилирует модуль fishing.ko из исходного файла fishing.c. Да, расширение объектного файла указано как .o, но в результате будет создан модуль с расширением .ko.
И снова, скорее всего, факт компиляции модуля будет зависеть от конфигурационного параметра, в таком случае в Makefile необходимо добавить следующую строку.
Однажды драйвер удочки может стать очень сложным. Введение функции автодетектирования наличия лески может привести к тому, что модуль станет очень большим и теперь будет занимать больше одного файла исходного кода. Никаких проблем! Просто нужно внести в Makefile следующую запись.
fishing-objs := fishing-main.o fishing-line.o
В последнем случае будут скомпилированы файлы fishing-main.c и fishing-line.c и скомпонованы в файл модуля fishing.ko.
Наконец, может потребоваться передать компилятору gcc дополнительные конфигурационные параметры. Для этого в файле Makefile необходимо добавить следующую строку.
Если вы желаете поместить ваши файлы в каталог drivers/char/, вместо того чтобы создавать новый подкаталог, то необходимо просто прописать указанные строки (те, что должны быть прописаны в файле Makefile подкаталога drivers/char/fishing/) в файле drivers/char/Makefile.
Для компиляции просто запустите процесс сборки ядра, как обычно. Если компиляция модуля зависит от конфигурационного параметра, как в данном случае она зависит от параметра CONFIG_FISHING_POLE, то необходимо включить этот конфигурационный параметр перед компиляцией.
Читайте также
14.4.6. Удаление вершины дерева и удаление дерева: tdelete() и tdestroy()
14.4.6. Удаление вершины дерева и удаление дерева: tdelete() и tdestroy() Наконец, вы можете удалить элементы из дерева и, на системах GLIBC, удалить само дерево целиком:void *tdelete(const void *key, void **rootp,int (*compare)(const void*, const void*));/* Расширение GLIBC, в POSIX нет: */void tdestroy(void *root, void (*free_node)(void *nodep));Аргументы
Совместное использование объектов ядра приложениями и службами
Совместное использование объектов ядра приложениями и службами Возможны ситуации, в которых служба и приложения разделяют объект ядра. Например, служба может использовать именованный мьютекс для защиты разделяемой области памяти, используемой для обмена данными с
Дерево исходных кодов ядра
Дерево исходных кодов ядра Дерево исходных кодов ядра содержит ряд каталогов, большинство из которых также содержит подкаталоги. Каталоги, которые находятся в корне дерева исходных кодов, и их описание приведены в табл. 2.1.Таблица 2.1. Каталоги в корне дерева исходных
Компиляция вне дерева исходных кодов ядра
Компиляция вне дерева исходных кодов ядра Если вы предпочитаете разрабатывать и поддерживать ваш модуль отдельно от дерева исходных кодов ядра и жить жизнью аутсайдера, просто создайте файл Makefile следующего вида в том каталоге, где находится модуль.obj-m := fishing.oТакая
Использование службы каталогов Active Directory Service Interface (ADSI)
Использование службы каталогов Active Directory Service Interface (ADSI) Обсудим сначала термины «каталог» и «служба каталога», которые будут использоваться в этом разделе. Под каталогом в общем смысле этого слова подразумевается источник информации, в котором хранятся данные о некоторых
Инсталляция нового ядра и его использование
Инсталляция нового ядра и его использование Чтобы готовое ядро можно было использовать, его необходимо инсталлировать. Как было сказано ранее, скомпилированное ядро помещается в каталог /usr/src/linux/arch/i386/boot (вместо i386 может присутствовать другой каталог, имя которого
12.3. Совместное использование каталогов в Linux Mandrake
12.3. Совместное использование каталогов в Linux Mandrake Конфигуратор diskdrake-fileshare позволяет очень быстро настроить пакет Samba для разрешения совместного использования каталогов («расшаривания» каталогов). Убедитесь, что запущены сервисы nfs и smb, если это не так, запустите их:# service
9.3.3. Использование двоичного дерева как справочной таблицы
9.3.3. Использование двоичного дерева как справочной таблицы Пусть дерево уже отсортировано. Тогда оно может служить прекрасной справочной таблицей; например, для поиска в сбалансированном дереве, содержащем миллион узлов, понадобится не более 20 сравнений (глубина дерева
Роль кодов операций CIL
Роль кодов операций CIL После определения компоновочного блока .NET, пространства имен и набора типов в терминах GIL с использованием различных директив и связанных атрибутов остается одно – предложить программную логику реализации типа. Это является задачей кодов
Анализ кодов операций CIL
Анализ кодов операций CIL Заключительной темой нашего обсуждения в этой главе в отношении программного кода CIL будет роль кодов операций. Напомним, что код операции – это просто лексема CIL, используемая для построения логики реализации данного члена. Полный набор кодов
4.14.3. Использование Model Explorer для реорганизации дерева декомпозиции
4.14.3. Использование Model Explorer для реорганизации дерева декомпозиции Существуют причины, по которым работа «Разработать конфигурацию» должна быть на верхнем уровне, на диаграмме АО. Действительно, дизайнер разрабатывает стандарты на продукцию, включая правила сборки и
Модули внешних кодов
Модули внешних кодов Firebird может расширить свои возможности путем доступа к определенным пользователям подпрограммам, написанным на включающем языке программирования и скомпилированным во внешние библиотеки общего доступа. Этот раздел содержит рассмотрение некоторых
Использование именованных сущностей вместо кодов символов
Использование именованных сущностей вместо кодов символов Это требование связано с желанием пользователей видеть в выходящем документе вместо сущности   ее более привычный вариант . В настоящее время приходится прибегать ко всяким хитростям вроде<xsl:text
Источник