Глава 1. Структура файлового дерева

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

Общие сведения

Драйверы 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.

Каталог pcmcia

PCMCIA, особенно драйверы PCCard, будут находиться здесь. Драйверы CardBus будут в каталоге PCI, потому что их API такой же, как для стандартных карт PCI.

Каталог oss

Здесь в Linux 2.6 (или более поздней версии) дерева хранятся исходные файлы OSS/Lite. В tar-архиве драйверов ALSA этот каталог, конечно, пуст :)

 

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