繁体   English   中英

如何通过rt linux中的用户程序从内核访问或接收数据?

[英]how to access or receive the data from kernel by user program in rt linux?

rt linux中的客户端和服务器通信。 客户端正在发送数据,服务器是接收器.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从内核spacce接收数据。 内核正在发送时间戳。

问题:有人可以告诉我如何通过用户程序从内核空间接收数据吗?

您是否有某些特殊原因需要修改内核代码以产生时间戳?

您在哪个内核版本上? 如果它不是古老的东西,我建议您看一下: https : //www.kernel.org/doc/Documentation/networking/timestamping.txt和一些不错的示例代码, 网址是: https : //www.kernel.org/doc /文档/网络/时间戳/

我对RT Linux一点都不熟悉,请原谅我的建议不适用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM