ユーザプロセスからsendmsg APIコールを呼び出すと、入力関数が呼び出され、カーネルにメッセージが送信されました。しかし、recvmsg API呼び出しを呼び出すと、再度入力関数が呼び出されますか?私はこの例を見て、評判がないのでコメントできません。その投稿のタイトルは: "どのようにnetlinkソケットを使用してカーネルモジュールと通信するのですか?"だから誰もその例を見て、カーネルソケットに書き込んだり読み込んだりするのを見分ける方法を教えてもらえますか?カーネルのNETLINK入力関数
0
A
答えて
0
なぜ入力機能が再び呼び出されるのですか? が送信し、recvmsg()
を受信します。 hello_nl_recv_msg()
は、カーネルモジュールがメッセージを受信したときにのみ実行されます。
この例では、ユーザー空間プログラムはsendmsg()
関数を使用してメッセージAをカーネルに送信します。
メッセージがカーネルに到着しました。カーネルはhello_nl_recv_msg()
を呼び出します。メッセージは、引数skb
にカプセル化されています。
カーネルモジュールは、プロセスIDがskb
を送信したプロセスに応答を送信することを選択します。メッセージBを作成します。カーネルモジュールはnlmsg_unicast()
機能を使用してメッセージBをユーザー空間に送信します。
メッセージ機能中にユーザスペースにBが表示されます。 (ユーザ空間プログラムのプロセスIDはカーネルモジュールが書いたものと同じなので)
recvmsg()
カーネルへのメッセージが受信されるまでスリープするので、カーネルがすでに応答しているかどうか心配する必要はありませんその関数を呼び出す前に。
関連する問題
- 1. tensorflow.nn.conv2d - 入力/カーネルmatmul
- 2. Netlinkソケットでカーネルのイベントを受け取る方法は?
- 3. CUDAのカーネル関数
- 4. dtraceのカーネル関数への引数の出力
- 5. Linuxカーネル汎用Netlink - それは同時ですか?
- 6. netlinkを使った仮想マシンとカーネル通信
- 7. 入力がある関数と入力がない関数 - Python
- 8. Linuxカーネル:マルチプロセッサシステムのschedule()関数
- 9. pysparkの関数入力()
- 10. Pythonの入力()関数
- 11. Python関数の複数の入力
- 12. 関数の入力数の可変 - R
- 13. ルア:関数とユーザー入力?
- 14. Pycharm 2017.3と入力関数
- 15. 入力検証関数
- 16. C++、main関数の入力引数
- 17. onclick関数と入力関数複数の変数
- 18. opencl用のカーネル関数のネスト
- 19. cudaカーネルの推力
- 20. カーネル空間内のmalloc関数
- 21. struct task_structのLinuxカーネルNUMA関連変数
- 22. NetLinkメッセージメモリの問題
- 23. 関数への入力の構造
- 24. SciPyのODEINT関数の配列入力
- 25. JavaScriptのリターン関数の入力
- 26. jquery関数のドロップダウンとボタンの入力
- 27. Broadcom NetLink BCM5906Mドライバ
- 28. 別の関数の入力としての関数名?
- 29. scanf関数は、入力のために
- 30. phpソケット入出力関数の違い
私たちがsendmsg API呼び出しを呼び出すと、それはnlmsg_unicast()も呼び出したことになりますので、次にrecvmsg()を呼び出すと、カーネルからメッセージが取得されます。それはポイントですか? – Bratic