パケットを処理するためのTCP / IPネットワークスタックのLinuxカーネルで定義されたさまざまなレイヤーと関数によって消費されるCPUサイクルを計算しようとしていました。だから私はさまざまな機能によるCPU消費にTSCを使用しました。これは、sk_data_ready() 関数への 1 回の呼び出しに多くの CPU サイクルがかかることを示しています。
だから私は生のソケットの Linux カーネルの TCP/IP スタックのソース コードをたどり、特定のソケットの受信循環リンク リストにパケットが最終的にキューに入れられるので、情報を取得しました。
しかし、パケットをキューに入れた後、sock.c で sock_queue_rcv_skb() として定義された関数が呼び出されます。
sk->sk_data_ready(sk, skb_len);
これはコールバック関数です(私は思います)。しかし、このコールバック関数のソース コードを取得できません。
コードとその仕組みを見つけるのを手伝ってくれる人はいますか?
recvfrom() 関数は、上記で定義されたコールバック関数にも関連していますか?