Глава 1. Структура файлового дерева |
Предыдущая Содержание Следующая |
Общие сведенияДрайверы ALSA представлена двумя способами.
Одним из них является дерево, предоставляемое, как tar-архив или через CVS с FTP сайта ALSA, а другим - дерево ядра Linux версии 2.6 (или более поздней). Для синхронизации обоих, дерево драйверов ALSA состоит из двух различных деревьев: ядро ALSA и драйверы ALSA. Первое содержит только исходный код для дерева Linux 2.6 (или более поздней версии). Это дерево предназначено исключительно для компиляции в среде версии 2.6 или более поздней. Второе, драйверы ALSA, содержит множество небольших файлов для компиляции драйверов ALSA вне дерева ядра Linux, функции-обёртки для старых версий ядра 2.2 и 2.4, чтобы адаптировать самое последнее API ядра, и дополнительные драйверы, которые всё ещё находятся в разработке или тестируются. Драйверы в дереве драйверов ALSA будут перемещены в ядро ALSA (и в конечном итоге в дерево ядра 2.6), когда они будут завершены и подтверждено, что они работают хорошо.
Файловая структура дерева драйверов ALSA показана ниже. И ядро ALSA, и драйверы ALSA имеют почти одинаковую файловую структуру, за исключением каталога "core". В дереве драйверов ALSA он называется "acore".
Пример 1.1. Структура файлового дерева ALSA
sound /core /oss /seq /oss /instr /ioctl32 /include /drivers /mpu401 /opl3 /i2c /l3 /synth /emux /pci /(cards) /isa /(cards) /arm /ppc /sparc /usb /pcmcia /(cards) /oss
Каталог coreЭтот каталог содержит центральный уровень, который является сердцем драйверов ALSA. В этом каталоге хранятся родные модули ALSA. Подкаталоги содержат различные модули и зависят от конфигурации ядра. core/ossВ этом каталоге хранятся коды для модулей эмуляции PCM и микшера OSS. Эмуляция rawmidi OSS включена в код rawmidi ALSA, так как он очень небольшой. Код секвенсора хранится в каталоге core/seq/oss (смотрите ниже). core/ioctl32Этот каталог содержит обёртки 32-х разрядных ioctl для 64-х разрядных архитектур, таких как x86-64, ppc64 и sparc64. Для 32-х разрядных архитектур и alpha они не собираются. core/seqЭтот каталог и его подкаталоги предназначены для секвенсора ALSA. Этот каталог содержит ядро секвенсора и основные модули секвенсора, такие как snd-seq-midi, snd-seq-virmidi и так далее. Они компилируются только тогда, когда в конфигурации ядра устанавливается CONFIG_SND_SEQUENCER. core/seq/ossЭтот каталог содержит коды эмуляции секвенсора OSS. core/seq/instrЭтот каталог содержит модули для уровня инструментов секвенсора. Каталог includeЭто место для общедоступных файлов заголовков драйверов ALSA, которые должны быть экспортированы в пространство пользователя, или подключаются некоторыми файлами в других каталогах. В основном, не предназначенные для общего использования файлы заголовков не должны быть помещены в этот каталог, но такие файлы всё равно можно найти здесь в силу исторических причин :) Каталог driversЭтот каталог содержит код, используемый совместно различными драйверами на разных архитектурах. Следовательно, он не должен быть архитектурно-зависимым. Например, в этом каталоге можно найти драйвер-пустышку PCM и последовательный драйвер MIDI. В подкаталогах есть код для компонентов, которые не зависят от архитектуры шины и процессора. drivers/mpu401Здесь хранятся модули MPU401 и MPU401-UART. drivers/opl3 и opl4Здесь находится материал для FM-синтезатора OPL3 и OPL4. Каталог i2cЭтот каталог содержит компоненты ALSA i2c. Хотя на Linux есть стандартный уровень i2c, ALSA имеет свой собственный код i2c для некоторых карт, потому что звуковой карте необходимы только простые операции и стандартное API i2c является слишком сложным для такой цели. i2c/l3Это подкаталог для ARM L3 i2c. Каталог synthЭтот каталог содержит модули синтезатора центрального уровня. Пока в подкаталоге synth/emux есть только драйвер синтезатора Emu8000/Emu10k1. Каталог pciВ этом каталоге и его подкаталогах содержатся высокоуровневые модули карт для звуковых карт PCI и код, относящийся к шине PCI. Драйверы, скомпилированные из одного файла, хранятся прямо в каталоге pci, а драйверы из нескольких исходных файлов хранятся в своих собственных подкаталогах (например, emu10k1, ice1712). Каталог isaВ этом каталоге и его подкаталогах содержатся высокоуровневые модули карты для звуковых карт ISA. Каталоги arm, ppc и sparcЭти каталоги используются для высокоуровневых модулей карты, которые являются специфическими для одной из этих архитектур. Каталог usbЭтот каталог содержит аудио драйвер USB. В последней версии драйвер USB MIDI интегрирован в драйвер звука USB. Каталог pcmciaPCMCIA, особенно драйверы PCCard, будут находиться здесь. Драйверы CardBus будут в каталоге PCI, потому что их API такой же, как для стандартных карт PCI. Каталог ossЗдесь в Linux 2.6 (или более поздней версии) дерева хранятся исходные файлы OSS/Lite. В tar-архиве драйверов ALSA этот каталог, конечно, пуст :)
|
Предыдущая Содержание Следующая |