rt linux中的客户端和服务器端通信。客户端负责发送数据,服务器端用于客户端与服务器之间的通信,receiver.UDP用于客户端与服务器之间的通信。当服务器(Rt linux)从客户机接收到数据时,内核应该停止它正在做的事情,并开始执行新到达的数据。我想计算中断在内核中发生的时间(时间戳)。在rt-linux中,操作系统的所有操作都发生在内核中。因此,我在计算内核源代码中的中断时间。因此,我修改了/usr/src/linux-version/net/core/dev.c位置中的内核源代码,如下所示:我正在计算时间并将其存储在缓冲区skb中。
//此代码位于网络设备驱动程序级别。
int netif_rx(struct sk_buff *skb)
{
__net_timestamp(skb);//I modify the code in kernel to get the timestamp and store in buffer
}//将数据存储到缓冲区后,内核会将数据发送到上层,如IP、UDP、INET,最后发送到内核空间的SOCKET。
但是我想通过用户空间从内核空间读取时间戳包。即我的程序。
我使用recvfrom api从内核空间接收数据。内核正在发送时间戳。
问:谁能告诉我用户程序如何从内核空间接收数据??
发布于 2014-04-16 16:34:07
您有什么特殊的原因需要修改内核代码来生成时间戳吗?
您使用的是哪个内核版本?如果不是很古老,我建议您查看:https://www.kernel.org/doc/Documentation/networking/timestamping.txt和:https://www.kernel.org/doc/Documentation/networking/timestamping/中的一些很好的示例代码
我对RT Linux一点也不熟悉,所以如果我的建议不适用,请原谅。
https://stackoverflow.com/questions/23077970
复制相似问题