如何获得Linux内核的时间戳?

int netif_rx(struct sk_buff *skb) { if(skb -> stamp.tv_sec ==0) do_gettimeofday(&skb->stamp); } 

上面的api是接收方api,它从发送方接收数据。 我想计算一下接收数据的时间并将其存储在缓冲区中。 在2993行的上面的api可以在内核源代码中find:/linux/net/core/dev.c
但我得到错误:作为结构sk_buff没有成员命名邮票。

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”的memeber。 结构timeval但参数的typesunio ktime_t。

Solutions Collecting From Web of "如何获得Linux内核的时间戳?"

sk_buff->tstampktime_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); } } 

尝试使用tstamp而不是stamp