Неправильное время внутри пространства ядра с использованием ktime_get_real_ts64 - PullRequest
0 голосов
/ 10 июля 2020

Я пишу модуль ядра (LKM) и мне нужно распечатать правильное время. Это мой код:

static int __init modtime_init(void) {

printk("Entering: %s\n",__FUNCTION__);


//************************time k****************************************************************
struct timespec64 time;
unsigned long local_time;
struct rtc_time tm;
ktime_get_real_ts64(&time);
local_time = time.tv_sec - (sys_tz.tz_minuteswest * 60);
rtc_time_to_tm(local_time, &tm);

printk("date and time: (%04d-%02d-%02d %02d:%02d:%02d)\n", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);
}

Проблема в том, что dmesg print все в порядке, кроме часа. На самом деле tm.tm_hour меньше моего местного времени на два часа. Другими словами, вывод будет 10:00 вместо 12:00. Вывод команды "date" из пользовательского пространства также верен. Что-то не так с моим кодом?

...