繁体   English   中英

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

[英]how to get the timetamp for the linux kernel?

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

上面的api是接收方api,它从发送方接收数据。 我想计算接收数据并将其存储在缓冲区中的时间。 上面的API在2993行是内核源代码,位于/linux/net/core/dev.c。
但是我得到了错误:因为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->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

暂无
暂无

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

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