在Linux中的内核线程之间进行通信

时间:2009-09-18 02:03:05

标签: multithreading linux-kernel linux-device-driver

我正在将app / PCI驱动程序从vxWorks移植到Linux,如果可能,我希望保持相同的架构。当前驱动程序有2个任务(线程),它们使用消息队列相互通信。是否有内核线程之间的通信机制?消息队列用于传递缓冲区地址和大小信息,因此任务可以使用DMA来移动大量数据。

2 个答案:

答案 0 :(得分:2)

听起来workqueue接口可能就是您所追求的 - 或者对于重量较轻的东西,kfiforwsem信号量相结合。

答案 1 :(得分:1)

我强烈建议不要在Linux上保留VxWorks架构。内核线程扩散不受欢迎,您的代码永远不会进入官方内核树。即使您不关心这一点,您是否100%确定要以非标准方式开发驱动程序?如果你只是摆脱这两项任务,事情就会简单得多。顺便说一句,为什么到目前为止你需要PCI驱动程序的任务呢?