Linux 如何在内核中打印当前时间?
我是linux的初学者。(很抱歉我的英语不好) 我应该打印当前时间,并在linux中通过系统调用执行某些操作。 我做了其他事情,但无法打印当前时间。。 我写得像Linux 如何在内核中打印当前时间?,linux,time,kernel,Linux,Time,Kernel,我是linux的初学者。(很抱歉我的英语不好) 我应该打印当前时间,并在linux中通过系统调用执行某些操作。 我做了其他事情,但无法打印当前时间。。 我写得像 #include<linux/kernel.h> #include<linux/time.h> ... asmlinkage long sys_printtime(void) { ... struct timeval time; struct tm tm1; ...
#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;
}
#包括
#包括
...
ASM链接长系统打印时间(无效){
...
结构时间值时间;
struct-tm1;
...
do_gettimeofday(和time);
本地时间=(u32)(time.tv_sec-(sys_tz.tz_minuteswest*60));
当地时间(3600*9)和tm1;
printk(内核调试“时间@(%04d-%02d-%02d%02d:%02d:%02d:%02d)\n”、tm1.tm_年+1900、tm1.tm_月+1、tm1.tm_日、tm1.tm_小时、tm1.tm_分钟、tm1.tm_秒);
...
返回0;
}
但它不起作用
错误说我不能使用do_gettimeofday,我终于知道我不能再使用do_gettimeofday了,因为kernel5不支持。
我在谷歌和stackoverflow上搜索,
但是我不知道如何用内核5打印当前时间。。
有人能帮我吗?是的,
do\u gettimeofday
因问题已被删除。相反,内核提供了可以根据需要使用的时间接口。检查文档
例如,您有ktime\u get\u ts64(struct timespec64*ts)
,它将以秒和纳秒为单位提供时间
struct timespec64 {
time64_t tv_sec; /* seconds */
long tv_nsec; /* nanoseconds */
};
如果只需要纳秒,可以使用u64 ktime\u get\n ns(void)
。请检查上面的文档以了解适合您的目的。
您还可以查看和以了解更多信息
如果要查找示例,只需使用
grep-rni
或使用cscope
在内核源代码中搜索函数名。您也可以在线搜索非常感谢!我已经用uu-ktime\u-get\u-real\u-seconds()解决了它:)我会像你说的那样用ktime\u-get\u-ts64再试一次。再次感谢(x)