我试图计算linux 内核中定义的用于处理数据包的 TCP/IP 网络堆栈的各种层和函数消耗的 CPU 周期。所以我使用TSC通过各种功能消耗CPU。这表明单次调用 sk_data_ready() 函数会占用大量 CPU 周期。
因此,我遵循 linux 内核中 TCP/IP 堆栈的源代码获取原始套接字并获取信息,因为数据包最终在特定套接字的接收循环链表中排队。
但是在对数据包进行排队之后,sock.c 中定义为 sock_queue_rcv_skb() 的函数调用
sk->sk_data_ready(sk, skb_len);
这是回调函数(我认为)。但我无法获得此回调函数的任何源代码。
谁能帮我找到代码及其工作原理?
recvfrom() 函数是否也与上面定义的回调函数有关?