Comunicazione tra thread del kernel in Linux
-
22-07-2019 - |
Domanda
Sto eseguendo il porting di un driver app / PCI da vxWorks a Linux e, se possibile, vorrei mantenere la stessa architettura. Il driver corrente ha 2 attività (thread) che comunicano tra loro utilizzando le code dei messaggi. Esiste un meccanismo per comunicare tra i thread del kernel? Le code dei messaggi vengono utilizzate per trasferire gli indirizzi del buffer e le informazioni sulla dimensione in modo che le attività possano utilizzare DMA per spostare grandi quantità di dati.
Soluzione
Consiglio vivamente di non mantenere l'architettura VxWorks su Linux. La proliferazione del thread del kernel è disapprovata, il tuo codice non lo trasformerà mai nell'albero del kernel ufficiale. Anche se non ti interessa, sei sicuro al 100% di voler sviluppare un driver in modo non standard? Le cose sarebbero molto più semplici se ti sbarazzassi di questi due compiti. A proposito, perché mai hai bisogno di compiti per il driver PCI per iniziare?
Altri suggerimenti
Sembra che l'interfaccia workqueue
potrebbe essere ciò che stai cercando - o per qualcosa di più leggero, un kfifo
combinato con un rwsem
semaforo.