Управление конфигурационными параметрами

Управление конфигурационными параметрами

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

Благодаря новой системе компиляции ядра "kbuild", которая появилась в серии ядер 2.6, добавление нового конфигурационного параметра является очень простым делом. Все, что необходимо сделать, — это добавить новую запись в файл Kconfig, который отвечает за конфигурацию дерева исходных кодов ядра. Для драйверов этот файл обычно находится в том же каталоге, в котором находится и исходный код. Если код драйвера удочки находится в каталоге drivers/char/, то необходимо использовать файл drivers/char/Kconfig.

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

source drivers/char/fishing/Kconfig

в существующий файл Kconfig, скажем в файл drivers/char/Kconfig.

Конфигурационные записи в файле Kconfig добавляются очень просто. Для модуля управления удочкой эта запись может выглядеть следующим образом.

config FISHING_POLE

 tristate "Fish Master XL support"

 default n

 help

  If you say Y here, support for the Fish Master XL 2000 Titanium

  with computer interface will be compiled into the kernel

  and accessible via

  device node. You can also say M here and the driver

  will be built as a

  module named fishing.ko.

  If unsure, say N.

Первая строка определяет, какой конфигурационный параметр создается. Обратите внимание, что префикс CONFIG_ указывать не нужно, он добавляется автоматически.

Вторая строка указывает на то, что параметр может иметь три состояния (tristate), которые соответствуют следующим значениям: статическая компиляция в ядро (Y), компиляция в качестве модуля (M) или не компилировать драйвер вообще (N). Для того чтобы запретить компиляцию кода, который соответствует конфигурационному параметру, в качестве модуля (допустим, что этот параметр определяет не драйвер. а просто некоторую дополнительную функцию) необходимо указать тип параметра bool вместо tristate. Текст в кавычках, который следует после этой директивы, определяет название конфигурационного параметра и будет отображаться различными утилитами конфигурации.

Третья строка позволяет указать значение этого параметра по умолчанию, который соответствует в данном случае запрещению компиляции.

Директива help указывает на то, что остальная часть текста будет интерпретироваться как описание данного модуля. Различные конфигурационные утилиты могут при необходимости отображать этот текст. Так как этот текст предназначен для пользователей и разработчиков, которые будут компилировать ядро, то он должен быть коротким и ясным. Обычные пользователя, скорее всего, не будут компилировать ядро, а сели будут, то тогда они должны понимать, что в этом описании сказано.

Существуют также и другие директивы файла конфигурации. Директива depends указывает на конфигурационные параметры, которые должны быть установлены перед тем, как может быть установлен текущий параметр. Если зависимости не будут удовлетворены, то текущий параметр будет запрещен. Например, можно указать следующую директиву.

depends on FISH_TANK

При этом текущий модуль не будет разрешен, пока не будет разрешен модуль, соответствующий конфигурационному параметру CONFIG_FISH_TANK.

Директива select аналогична директиве depends, за исключением того, что она принудительно включает указанный конфигурационный параметр, если включается текущая конфигурационная опция. Ее не нужно использовать так же часто, как директиву depends, потому что она включает другие конфигурационные опции. Использовать ее так же просто.

select BAIT

В этом случае конфигурационный параметр CONFIG_BAIT автоматически активизируется при включении конфигурационного параметра CONFIG_FISHING_POLE.

Как для директивы select, так и для директивы depends можно указывать несколько параметров с помощью оператора &&. В директиве depends с помощью восклицательного знака перед параметром можно указать требование, что некоторый конфигурационный параметр не должен быть установлен. Например, следующая запись указывает, что для компиляции текущего драйвера необходимо, чтобы был установлен конфигурационный параметр CONFIG_DUMB_DRIVERS и не был установлен параметр CONFIG_NO_FISHING_ALLOWED.

depends on DUMB_DRIVERS && !NO_FISHING_ALLOWED

После директив tristate и bool можно указать директиву if, что позволяет сделать соответствующий параметр зависимым от другого конфигурационного параметра. Если условие не выполняется, то конфигурационный параметр не только запрещается, но и не будет отображаться утилитами конфигурации. Например, следующая строка указывает, что функция "Deep Sea Mode" будет доступна, только если разрешен конфигурационный параметр CONFIG_OCEAN.

bool "Deep Sea Mode" if OCEAN

Директива if также может быть указана после директивы default, что означает, что значение по умолчанию будет установлено, только если выполняется условие, указанное в директиве if.

Система конфигурации экспортирует несколько метапараметров, чтобы упростить процесс конфигурации. Параметр CONFIG_EMBEDDED устанавливается только тогда, когда пользователь указывает, что он хочет видеть вес параметры, отвечающие за запрещение некоторых ключевых возможностей ядра (обычно с целью сохранения памяти на встраиваемых системах). Параметр CONFIG_BROKEN_ON_SMP используется, чтобы указать, что драйвер не рассчитан на системы с симметричной многопроцессорностью. Обычно этот параметр не устанавливается, при этом от пользователя требуется, чтобы он сам убедился в возможности компиляции драйвера для SMP. Новые драйверы этот флаг использовать не должны.

Параметр CONFIG_EXPERIMENTAL используется для указания экспериментальных или не очень хорошо оттестированных возможностей. По умолчанию этот параметр отключен, что требует от пользователя лично убедиться в степени риска при разрешении компиляции того или иного драйвера.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

7.7.5. Управление SELinux

Из книги Fedora 8 Руководство пользователя автора Колисниченко Денис Николаевич

7.7.5. Управление SELinux Для управления системой контроля доступом используется конфигуратор system-config-selinux (рис. 7.18). С помощью этого конфигуратора можно полностью настроить SELinux, но чаще всего вы будете посещать раздел Boolean, в котором задаются возможности той или иной сетевой


4 Удаленное управление

Из книги Удаленная работа на компьютере: как работать из дома комфортно и эффективно автора Клименко Роман Александрович

4 Удаленное управление Проблемы удаленного управления компьютером считаются прерогативой администраторов, поэтому необходимость их рассмотрения в этой книге долго оставалась под вопросом. В конце концов я решил описать методы удаленного управления по той простой


Вызов методов с параметрами

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Вызов методов с параметрами Чтобы показать пример динамического вызова метода, имеющего параметры, предположим, что тип MiniVan определяет метод, который называется TellChildToBeQuiet().// Усмирение вопящих…public void TellChildToBeQuiet(string kidName, int shameIntensity) { for (int i = 0; i ‹ shameIntensity;


Малосигнальная модель с h -параметрами для биполярных транзисторов

Из книги OrCAD PSpice. Анализ электрических цепей автора Кеоун Дж.

Малосигнальная модель с h-параметрами для биполярных транзисторов Точной моделью для биполярных транзисторов, широко используемой при анализе на малых сигналах, является модель в h-параметрах, показанная на рис. 3.5. Эта модель с соответствующими значениями используется


Упрощенная модель с h -параметрами

Из книги Руководство по переходу на Ubuntu 10.04 LTS «Lucid Lynx» автора Неворотин Вадим

Упрощенная модель с h-параметрами Предыдущие примеры были основаны на полной модели в h-параметрах для транзистора, которая обычно используется для анализа при малом низкочастотном сигнале. Для анализа ряда транзисторных схем можно использовать также упрощенную модель


Анализ усилителя с общим эмиттером, использующий упрощенную модель с h-параметрами

Из книги Искусство программирования на языке сценариев командной оболочки автора Купер Мендель

Анализ усилителя с общим эмиттером, использующий упрощенную модель с h-параметрами На рис. 3.28 показана упрощенная модель для использования в PSpice, на рис. 3.29 — схема ОЭ, использующая эту модель. Входной файл для анализа приведен далее: Simplified h-Parameter AnalysisVS 1 0 1mVVO 3 0 0VF 4 0 VO 50RS 1 2


Применение собственных моделей с h -параметрами

Из книги Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil автора Ковязин Алексей Николаевич

Применение собственных моделей с h-параметрами Сравним теперь нахождение коэффициентов усиления по напряжению и по току двумя методами: при использовании встроенной модели PSpice и при применении нашей собственной модели в h-параметрах для усилителя ОЭ. Последний метод


Использование моделей с h -параметрами

Из книги автора

Использование моделей с h-параметрами В главе 3 h-параметры для транзистора использовались, чтобы показать, как академическая модель для биполярного транзистора (BJT) обрабатывается в PSpice. В модели были использованы два зависимых источника Е и F. Когда эта схема получена в


14.1 Управление терминалом

Из книги автора

14.1 Управление терминалом Давайте выполним какую-нибудь командочку, например:lsb_release -a 2> /dev/null | grep -P "(?<=Codename:)(.*)"Вот что должно было получиться: Рис. 14.2: Кодовое имя вашего дистрибутива. Рис. 14.2: Кодовое имя вашего дистрибутива.Набирать такие команды с клавиатуры


22.1 Управление репозиториями

Из книги автора

22.1 Управление репозиториями Для управления репозиториями предназначена программа «Источники приложений», находящаяся в меню Система?Администрирование. Для запуска этого приложения вам естественно понадобятся административные привилегии[89]. Кстати, в это же


Пример 10-2. Цикл for с двумя параметрами в каждом из элементов списка

Из книги автора

Пример 10-2. Цикл for с двумя параметрами в каждом из элементов списка #!/bin/bash# Список планет.# Имя кажой планеты ассоциировано с расстоянием от планеты до Солнца (млн. миль).for planet in "Меркурий 36" "Венера 67" "Земля 93" "Марс 142" "Юпитер 483"do set -- $planet # Разбиение переменной "planet" на