int netif_rx(struct sk_buff *skb)
{
if(skb -> stamp.tv_sec ==0)
do_gettimeofday(&skb->stamp);
}
上面的api是receiver side api,接收发送方的数据。我想计算 t
它接收数据并将其存储在缓冲区中的时间。
上面第 2993 行的 api 在内核源代码中可用:/linux/net/core/dev.c
但我收到错误:因为 struct sk_buff 没有名为 stamp 的成员。
http://lxr.free-electrons.com/source/include/linux/skbuff.h 有人可以帮我:如何获取 linux 内核的时间戳。
后来我将我的代码更改为:
int netif_rx(struct sk_buff *skb)
{
if(skb -> tstamp.off_sec ==0)
do_gettimeofday(&skb->tstamp);
}
现在我收到错误消息:ktime_t 没有名为“tv_sec”的成员。 struct timeval 但参数是 unio ktime_t 类型。
最佳答案
sk_buff->tstamp
是ktime_t
类型的变量。 do_gettimeofday
将时间设置为 struct timeval
的变量。这里有不同的类型,所以你需要转换。一个简单的方法是:
int netif_rx(struct sk_buff *skb)
{
if(skb -> tstamp.off_sec ==0)
{
struct timespec now;
getnstimeofday(&now);
skb->tstamp = timespec_to_ktime(now);
}
}
关于c - 如何获取linux内核的时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22994045/