我是专门询问CONFIG_SND_MAX_CARDS
内核的。
来自使用此配置的代码,例如在sound/usb/card.c
对于 USB 卡,声卡存储在循环的普通数组中。
为什么内核不使用列表并且拥有无限数量的声卡?
我知道由于硬件原因(总线中的插槽数量等),无限是不可能的,但是动态分配的实现至少可以节省用户在编译时指定最大数量的麻烦。
有任何想法吗?
答案1
在ISA 声卡的美好/dev/
时代,动态创建设备节点是不可能的,因此所有设备都必须预先分配。这导致了 8 个声卡的限制,并且在编写驱动程序时考虑到了这一限制。
后来,当 devfs 和 USB 引入时,这个限制就被取消了。然而,最简单的方法是进行最小量的更改,即仅更改上限。
重写代码以允许无限数量的卡片会花费大量的精力,而且没有任何具体的好处。 (可以使用内核配置选项增加当前默认值 32,但尝试这样做的人通常会发现他们没有足够的 USB 带宽来支持那么多设备。)