Comunicação entre Kernel Threads em Linux
-
22-07-2019 - |
Pergunta
Estou portar um driver app / PCI de vxWorks para Linux e eu gostaria de manter a mesma arquitetura, se possível. O driver atual tem 2 tarefas (threads) que se comunicam entre si utilizando filas de mensagens. Existe um mecanismo para se comunicar entre threads do kernel? As filas de mensagens estão sendo usados ??para passar tampão endereços e informações sobre tamanho de modo que as tarefas podem usar DMA para mover grandes quantidades de dados.
Solução
Eu recomendo fortemente contra mantendo a arquitetura VxWorks em Linux. proliferação thread do kernel é desaprovada, seu código nunca vai fazê-lo em árvore oficial do kernel. Mesmo se você não se preocupam com isso, não é 100% certo que você quer desenvolver um driver de uma forma não-padrão? As coisas seriam muito mais simples se você apenas se livrar dessas duas tarefas. BTW, porque na terra você precisa tarefas para driver PCI para começar?
Outras dicas
Parece que a interface workqueue
pode ser o que você está depois -. Ou para algo mais leve, um kfifo
combinado com um semáforo rwsem