genl_register_family_with_ops
を複数のコールバックで使用して汎用ネットリンクインターフェイスを登録したとします。Linuxカーネル汎用Netlink - それは同時ですか?
私はそれに関する警告は表示されず、コールバックがシリアルに呼び出されると仮定しますが、コールバックの呼び出し方法に関する情報はありません。
私が登録した同じ汎用ネットリンクインターフェイスで複数のコールバックが同時に呼び出される可能性はありますか?コールバック間の同期は必要ですか?
は、単一のネットリンクコールバックが横取りまたは同時に二つのコアで実行することができます:
は疑問を簡単にするには?
イベントが発生するとコールバックが呼び出されます。コールバックが終了する前に別のイベントが発生した場合、重複した呼び出しが発生します。 – stark
@stark私はより具体的には、コールバックが重複する可能性のある同じnetlinkファミリの登録で2つのイベントを取得できるかどうかを尋ねています。複数のコールバックを持つ登録は1つだけです。 Netlinkコールバックは同じ構造を変更し、構造はnetlinkコールバックによってのみ変更/アクセスされます。 – Etherealone
@Etherealone私は、これは構成可能だが、デフォルトでは無効であると答えていると思う。私のカーネル3.11のソースでは、 'struct genl_family'は' bool parallel_ops'を含んでいます。 'linux-3.11.10-21/net/netlink/genetlink.c:674'またはnearaboutsの' genl_rcv_msg() 'に、そのフラグが設定されていない場合、グローバルミューテックスがロックされ、要求が処理され、グローバル・ミューテックスがロック解除されました。設定されている場合、このロックは発生しません。 –