在内核模块中获取当前时间(秒)

15

在内核模块中,获取当前时间距离纪元的秒数的标准方法是什么?

我看到了一些涉及获取xtime的技术,它们非常冗长,并且涉及while循环和锁。肯定有更好的方法。

[这不是一个重复的问题。我已经查看了此前在SO上的相关问题。许多答案要么没有指定使用的函数,要么错误地引用了在内核中不允许使用的time.h]


关于如何在Linux内核空间获取当前时间的问题,您可以参考https://dev59.com/W2445IYBdhLWcg3wBVzz - MOHAMED
1个回答

24

你可以使用getnstimeofday实现此功能。

/* getnstimeofday - Returns the time of day in a timespec */
void getnstimeofday(struct timespec *ts)

struct timespec 是什么:

struct timespec {
    time_t  tv_sec;     /* seconds */
    long    tv_nsec;    /* nanoseconds */
};

是的,你需要包含 #include <linux/time.h>


链接失效。在谷歌上搜索“man getnstimeofday”可以得到很多结果。 - Keith Thompson
@KeithThompson 更改了链接。感谢您的提醒! - cnicutar
@KeithThompson 我认为内核函数没有官方手册页面。我找到了一些关于“man getnstimeofday”的页面,但我不愿意链接到它们。如果你找到有用的东西,请随意编辑。 - cnicutar
我删除了链接。你之前提供的源链接似乎并不特别有用;我找到了三个或者更多的手册页面,但是我不喜欢它们的外观,并且所有相关信息都在答案中。当然,你可以随意编辑。 - Keith Thompson
@KeithThompson 我认为删除链接是明智的,谢谢。 - cnicutar
目前,内核开发人员已经弃用了这个接口,请参见https://www.kernel.org/doc/html/latest/core-api/timekeeping.html?highlight=getnstimeofday#c.getnstimeofday。 - Maria Matejka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接