c - 如何获取linux内核的时间戳?

标签 c linux pointers linux-kernel timestamp

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->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/

相关文章:

c - Linux 上使用的 malloc 版本

c - 用 C 中的零编译器错误抑制除法或模数

pointers - 如何用 Rust 编写一个合适的 map 函数?

C++ 重载 : overload of operator =

c - linux下使用C语言读取串口

c - 在结构初始化中初始化结构?

linux - Bash if else 字符串变量比较

java - 通过传递大文本从 php 调用 java jar 的最佳/最快方法是什么?

c++ - 如何从 SuperBible 获取 GLTools 库以在 Ubuntu 中工作?还是另一种选择?

c++ - 在 C++ 中将指针作为参数传递给用户定义函数的问题