“多实例”内核模块和参数化

时间:2017-02-21 19:57:16

标签: linux linux-kernel linux-device-driver kernel-module alsa

我正在开发一个内核模块,它应该处理自己的多个实例。它应该打开多个虚拟声卡。这种虚拟声卡只会通过UDP数据包将音频数据包流式传输到特定的IP地址。

在我的情况下,每当内核模块第一次被modprobe'd时,它将创建一个虚拟声卡实例(一个ALSA兼容设备),暴露一组ALSA节点 - / dev / snd / controlC0,/ dev / snd / pcmC0D0p和/ dev / snd / pcmC0D0c。在第二个“加载请求”上,它将暴露另一组ALSA节点 - / dev / snd / controlC1,/ dev / snd / pcmC1D0p和/ dev / snd / pcmC1D0c。

我的问题是:

  1. 不可能多次modprobe同一个内核模块,对吗? (我知道不是,请确认,请)
  2. 加载内核模块后,如何创建第二个(第三个......等)实例?如何将参数传递给它来创建另一个实例并相互区分?我可以使用SYSFS吗?
  3. 如果我可以使用SYSFS,我怎么能有复杂的参数化?
  4. 例如:

    如果我想设置参数virt_soundcard_name =“room1”,virt_soundcard_ip =“192.168.1.105”,virt_soundcard_number_of_channels =“8”最简单的方法是什么?我可以通过SYSFS或其他任何方式将具有该配置的文件或文件行传递给内核模块吗?

0 个答案:

没有答案