Por que o Linux tem um número máximo de placas de som? [fechadas]

2

Estou perguntando especificamente sobre CONFIG_SND_MAX_CARDS no kernel.

Do código usando essa configuração , por exemplo, em sound/usb/card.c para cartões USB, placas de som são armazenadas em matrizes simples que são colocadas em loop.

Por que o kernel não usa listas e tem um número ilimitado de placas de som?

Sei que ilimitado não é possível por motivos de hardware (números de slots no barramento etc.), mas ter uma implementação alocada dinamicamente pouparia ao usuário o incômodo de especificar um número máximo em tempo de compilação.

Alguma idéia?

    
por gimmesudo 15.01.2016 / 13:19

1 resposta

2

Nos tempos antigos bom das placas de som ISA, não foi possível criar nós de dispositivos em /dev/ dinamicamente, portanto todos os dispositivos tiveram que ser pré-alocados. Isso resultou em um limite de 8 placas de som, e os drivers foram escritos com esse limite em mente.

Mais tarde, quando devfs e USB foram introduzidos, esse limite foi removido. No entanto, a maneira mais fácil de fazer isso era fazer a quantidade mínima de alterações, ou seja, apenas alterar o limite superior.

Reescrever o código para permitir um número infinito de cartões teria sido um grande esforço sem qualquer benefício concreto. (É possível aumentar o padrão atual de 32 com uma opção de configuração do kernel, mas as pessoas que tentam normalmente descobrem que não têm banda USB suficiente para tantos dispositivos.)

    
por 15.01.2016 / 15:41