gpt4 book ai didi

c - XDP/BPF : Is there an user-space alternative to `bpf_ktime_get_ns` ?

转载 作者:行者123 更新时间:2023-12-03 09:55:22 24 4
gpt4 key购买 nike

我想在XDP程序中收到的数据包中插入时间戳。我知道如何获取时间戳的唯一方法是调用bpf_ktime_get_ns

但是,创建可比较时间戳的用户空间等效函数是什么?据我所知,ktime_get_ns返回自系统启动以来的时间(以纳秒为单位)。有

$ uptime
11:45:35 up 2 days, 3:15, 3 users, load average: 0.19, 0.29, 0.27

但这仅返回自系统启动以来的时间(以秒为单位)。因此,这里不可能进行精确的测量(微秒级会很好)。

编辑:纯粹是我的错。 @Qeole和@tuilagio完全正确。我在获取时间戳的指针的用户空间代码中犯了一个指针算术错误。

最佳答案

您可以使用clock_gettime():

static unsigned long get_nsecs(void)
{
struct timespec ts;

clock_gettime(CLOCK_MONOTONIC, &ts);
return ts.tv_sec * 1000000000UL + ts.tv_nsec;
}

并用 unsigned long now = get_nsecs();uint64_t now = get_nsecs();调用

此返回时间戳以nsec分辨率表示。

资料来源: https://github.com/torvalds/linux/blob/master/samples/bpf/xdpsock_user.c#L114

关于c - XDP/BPF : Is there an user-space alternative to `bpf_ktime_get_ns` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60970877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com