C 在rt linux中如何从用户程序访问内核内存?
rt linux中的客户端和服务器通信。客户端正在发送数据,服务器是接收器。UDP用于客户端和服务器之间的通信。 当服务器(rt linux)从客户端接收到数据时,内核应该停止它正在做的事情,并开始执行新到达的数据。我想计算内核中发生中断的时间(时间戳)。 在rt linux中,所有操作系统操作都在内核中进行。所以我在计算内核源代码中的中断时间。因此,我在/usr/src/linux version/net/core/dev.c位置修改了内核源代码,如下所示: 我正在计算时间并将其存储在缓冲区skb中 //此代码处于网络设备驱动程序级别C 在rt linux中如何从用户程序访问内核内存?,c,linux,sockets,linux-kernel,timestamp,C,Linux,Sockets,Linux Kernel,Timestamp,rt linux中的客户端和服务器通信。客户端正在发送数据,服务器是接收器。UDP用于客户端和服务器之间的通信。 当服务器(rt linux)从客户端接收到数据时,内核应该停止它正在做的事情,并开始执行新到达的数据。我想计算内核中发生中断的时间(时间戳)。 在rt linux中,所有操作系统操作都在内核中进行。所以我在计算内核源代码中的中断时间。因此,我在/usr/src/linux version/net/core/dev.c位置修改了内核源代码,如下所示: 我正在计算时间并将其存储在缓冲区s
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,最后是内核空间的套接字
但是我想通过用户空间从内核空间读取时间戳数据包。i、 我的计划
我正在使用RecvFromAPI从内核spacce(在内核内存中)读取数据
问:有人能告诉我如何通过用户程序访问包含时间戳数据的内核内存吗?您不能直接从用户空间访问内核内存-您必须使用某种API 你可以:
- 通过sysfs或debugfs导出时间戳,并将其作为常规文件读取
- 添加syscall,以便内核返回当前时间戳值
- 其他一些疯狂的变体,比如netlink套接字或共享内存