Глава 14. Параметры модуля |
Предыдущая Содержание Следующая |
Для ALSA есть стандартные опции модуля. Каждый модуль должен иметь, по крайней мере, параметры index (порядковый номер), id (идентификатор) и enable (разрешение работы).
Если модуль поддерживает несколько карт (обычно до 8 = SNDRV_CARDS карт), они должны быть массивами. Для упрощения программирования начальные значения по умолчанию уже определены как константы:
static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;
Если модуль поддерживает только одну карту, вместо этого они могли бы быть одиночными переменными. В этом случае опция enable необходима не всегда, но лучше иметь фиктивную опцию для совместимости.
Параметры модуля должны быть объявлены с помощью стандартных макросов module_param_array(), module_param() и MODULE_PARM_DESC().
Типичный код будет выглядеть, как показано ниже:
#define CARD_NAME "My Chip"
module_param_array(index, int, NULL, 0444); MODULE_PARM_DESC(index, "Index value for " CARD_NAME " soundcard."); module_param_array(id, charp, NULL, 0444); MODULE_PARM_DESC(id, "ID string for " CARD_NAME " soundcard."); module_param_array(enable, bool, NULL, 0444); MODULE_PARM_DESC(enable, "Enable " CARD_NAME " soundcard.");
Кроме того, не забудьте определить описание модуля, классов, лицензию и устройства. В частности, последняя версия modprobe требует определить лицензию модуля как GPL, и так далее, в противном случае система отображается как "испорченная".
MODULE_DESCRIPTION("My Chip"); MODULE_LICENSE("GPL"); MODULE_SUPPORTED_DEVICE("{{Vendor,My Chip Name}}");
|
Предыдущая Содержание Следующая |