Я пишу модуль ядра (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" из пользовательского пространства также верен. Что-то не так с моим кодом?