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

上面的api是接收方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);
    }

现在我得到的错误是:k时间没有名为“电视秒”的成员。结构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);
    }
}

关于c - 如何获得Linux内核的时间戳?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22994045/

10-10 11:16