softirq (netfilter 事前ルーティング フック) とユーザー コンテキスト (ioctl 呼び出し内) の間でデータ構造を共有するカーネル モジュールを開発しています。
このリンクを読んだ後、(spin_lock_bh
またはを使用してspin_lock_irqsave
) データを変更するときにユーザー コンテキストでソフトウェア割り込みを無効にし、共有データの操作が完了したら再度有効にする必要があることがわかりました。
ただし、softirq ハンドラー関数でロックを取得する必要があるかどうかはわかりません。ここでも (spin_lock を使用して) ロックを取得する必要がありますか?
別のsoftirqまたはhardirqとデータを共有する場合、softirqハンドラーでスピンロックを使用するだけでよいことを理解しています。私の理解は正しいですか?