【发布时间】:2014-12-01 20:24:20
【问题描述】:
我正在尝试创建一个自定义的 linux 内核模块。我要显示:
year-month-day hour:minute:second.
到目前为止,我已经得到了小时:分钟:秒的工作,但我无法让 Year 工作。我正在使用 linux/time.h 标头中的“tm_year”,但是当我使用我的模块时,年份显示不正确。这只是一长串随机数。任何帮助,将不胜感激。我只能访问 linux 头文件,因为内核需要在内核空间中运行。代码很丑,但我现在只是在试验:
#include <linux/module.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/time.h>
MODULE_LICENSE("GPL");
static int hello_proc_show(struct seq_file *m, void *v) {
// seq_printf(m, "Hello proc!\n");
unsigned long get_time;
int sec, hr, min, tmp1,tmp2, tmp3;
struct timeval tv;
struct tm tv2;
do_gettimeofday(&tv);
get_time = tv.tv_sec;
sec = get_time % 60;
tmp1 = get_time / 60;
min = tmp1 % 60;
tmp2 = tmp1 / 60;
hr = (tmp2 % 24) - 4;
tmp3 = tv2.tm_year;
seq_printf(m, "time :: %d:%d:%d\n",hr,min,sec);
seq_printf(m, "Year: %d\n", tmp3);
return 0;
}
【问题讨论】:
-
这是预期的行为,因为除了在堆栈上声明它之外,您还没有对 tv2 做任何事情。
-
@Peter 显然这是意料之中的,这就是我寻求指导的原因
标签: linux linux-kernel