gpt4 book ai didi

linux - 我如何在内核中打印当前时间?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:14:18 38 4
gpt4 key购买 nike

我是 Linux 的初学者。 (抱歉我的英语不好)我应该打印当前时间并通过 linux 中的系统调用做一些事情。我做了其他事情但未能打印当前时间..我这样写

#include<linux/kernel.h>
#include<linux/time.h>
...
asmlinkage long sys_printtime(void) {
...
struct timeval time;
struct tm tm1;
...

do_gettimeofday(&time);
local_time=(u32)(time.tv_sec -(sys_tz.tz_minuteswest * 60));
time_to_tm(local_time,(3600*9),&tm1);
printk(KERN_DEBUG "time @(%04d-%02d-%02d %02d:%02d:%02d)\n", tm1.tm_year+1900,tm1.tm_mon+1,tm1.tm_mday,tm1.tm_hour,tm1.tm_min,tm1.tm_sec);
...
return 0;
}

但它不起作用。

错误说我不能使用do_gettimeofday,我终于知道我不能再使用do_gettimeofday了,因为kernel5不支持。我在 google 和 stackoverflow 上搜索过,但我不知道如何在 kernel5 中打印当前时间..谁能帮帮我?

最佳答案

是的,do_gettimeofday由于 y2038 已被删除问题。相反,内核提供了您可以根据需要使用的时间接口(interface)。查看文档 https://www.kernel.org/doc/html/latest/core-api/timekeeping.html .

例如,您有 ktime_get_ts64(struct timespec64 *ts)这将为您提供以秒和纳秒为单位的时间。

struct timespec64 {
time64_t tv_sec; /* seconds */
long tv_nsec; /* nanoseconds */
};

如果你只想要纳秒,你可以使用u64 ktime_get_ns(void) .请检查上面的文档以了解适合您的目的。您也可以查看 timekeeping.hktime.h了解更多信息。

如果您想查找示例,只需使用 grep -rni <func name> 在内核源代码中搜索函数名称即可。或使用 cscope .也可以上网搜索here

关于linux - 我如何在内核中打印当前时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55566038/

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