gpt4 book ai didi

c - rt linux中的用户程序如何访问或接收来自内核的数据?

转载 作者:行者123 更新时间:2023-11-30 17:35:08 27 4
gpt4 key购买 nike

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从内核空间接收数据。内核正在发送时间戳。

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

最佳答案

您是否有修改内核代码以生成时间戳的特殊原因?

您使用的内核版本是什么?如果它不是古老的,我建议你看看: https://www.kernel.org/doc/Documentation/networking/timestamping.txt以及一些不错的示例代码: https://www.kernel.org/doc/Documentation/networking/timestamping/

我对 RT Linux 一点也不熟悉,所以如果我的建议不适用,请原谅。

关于c - rt linux中的用户程序如何访问或接收来自内核的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23077970/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com