Глава 14. Параметры модуля

Предыдущая  Содержание  Следующая V*D*V

Для 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}}");

 

Предыдущая  Содержание  Следующая