Ich entwickle ein Kernelmodul, das Datenstrukturen zwischen einem Softirq (Netfilter-Pre-Routing-Hook) und einem Benutzerkontext (innerhalb eines ioctl-Aufrufs) teilt.Daten zwischen Softirq und Prozesskontext teilen
Nach diesen link lesen, ich weiß, ich brauche die Software-Interrupts im Benutzerkontext zu deaktivieren, wenn die Daten zu modifizieren und wieder zu aktivieren, sobald die Operationen auf den Austausch von Daten abgeschlossen (entweder spin_lock_bh
oder spin_lock_irqsave
verwenden) sind.
Allerdings bin ich unsicher, ob ich die Sperre in der Softirq-Handler-Funktion greifen muss. Muss ich auch hier das Schloss greifen (mit spin_lock)?
Es ist mein Verständnis, dass ich nur eine Drehsperre in einem Softirq-Handler verwenden muss, wenn ich Daten mit einem anderen Softirq oder Hardirq teile. Ist mein Verständnis richtig?