Sto sviluppando un modulo del kernel che condivide strutture dati tra un softirq (hook di pre-routing di netfilter) e un contesto utente (all'interno di una chiamata ioctl).Condivisione di dati tra softirq e contesto di processo
Dopo aver letto questa link, so devo disattivare il software interrompe nel contesto utente quando si modificano i dati (utilizzando spin_lock_bh
o spin_lock_irqsave
) e riattivare loro volta le operazioni sui dati di azioni sono completate.
Tuttavia, non sono sicuro se è necessario prendere il blocco nella funzione di gestione softirq. Ho bisogno di prendere il blocco anche qui (con spin_lock)?
È a mia conoscenza che è necessario utilizzare uno spin lock in un gestore softirq se si condividono dati con un altro softirq o hardirq. La mia comprensione è corretta?