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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top