编写内核日志文件,请问linux内核中有没有现成是时间函数可以调用?
时间:2010-11-22
来源:互联网
我现在编写一个小的防火墙程序,只是想把防火墙命中的数据包给记录下来,
可是记录的时候,需要用到时间,不知道linux下有没有时间函数可以直接调用。
看过一些资料,说linux下只产生从1970.01.01到现在的以秒为单位的时间,是不是真的啊
作者: wuwenhua 发布时间: 2010-11-22
可是记录的时候,需要用到时间,不知道linux下有没有时间函数可以直接调用。
本来调用 printk 输出到系统日志的时候,系统日志会包含一个时间的。
如果你对时间精度要求不是很高,可以考虑用这个。
内核态有个 do_gettimeofday 函数,可以返回自1970.01.01 到现在的 秒和微妙。
如果需要转换为年月日的话,应该是需要自己写代码实现。
作者: Godbach 发布时间: 2010-11-22
比如 2010-11-22 10:25:30,如果这样的话,就必须自己写代码
通过秒来计算年,月,日。实现时间函数了吗?
作者: wuwenhua 发布时间: 2010-11-22
/* 根据秒数获得本地 日期的简单程序
* 用查表的方法来计算
* 2007年到2012年的时间
* 参数: r:时间结构,用于将计算结果传出
*/
void Localtime(struct tm *r, unsigned long time)
{
unsigned int year, i, days, sec;
__u16 *yday = NULL;
/* 2007年到2012年与1970年的天数 */
__u16 days_since_epoch[] =
{
/* 2007 - 2012 */
13514,13879, 14245, 14610,14975, 15340,
};
/*某月在一年中开始的天数*/
__u16 days_since_year[] = {
0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334,
};
/*某月在一个润年中开始的天数*/
__u16 days_since_leapyear[] = {
0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335,
};
yday = days_since_year; /*假设为一般年*/
sec = time + 3600*8; /*加上东八区的秒数*/
days = sec /(3600*24); /*整天数*/
sec = sec % (3600*24); /*一天内秒数*/
r->hour = sec / 3600; /*小时数*/
sec = sec % 3600; /*一小时内秒数*/
r->min = sec / 60; /*分钟数*/
r->sec = sec % 60; /*一分钟内秒数*/
/*查表计算1970开始的年数*/
for(i= 0, year = 2007; days_since_epoch[i]<days; i++,year++);
year--;i--; /*回复正确的数值*/
days -= days_since_epoch[i]; /*年内天数*/
if (year% 4 == 0 && (year % 100 != 0 || year % 400 == 0))
{
yday = days_since_leapyear; /*闰年*/
}
for (i=0; i < 12 && days > yday[i]; i++) /*查找月份*/ ;
r->year = year; /*年数*/
r->mon = i ; /*月数*/
r->mday = days -yday[i-1]; /*月中日期*/
return ;
}
作者: wuwenhua 发布时间: 2010-11-22
看你的意思是要绝对时间?你可以看一下内核源码kernel/time.c这个文件,里面是内核的时间处理,另外参考一下uld3的第5章时间处理部分。
作者: kgn28 发布时间: 2010-11-22
谢谢啊
作者: wuwenhua 发布时间: 2010-11-22
恩,直接使用xtime变量貌似也是可以的,这个是墙上时间。
作者: kgn28 发布时间: 2010-11-22
比如 2010-11-22 10:25:30,如果这样的话,就必须自己写代码
通过秒来计算年,月,日。实现时间函数了吗?
以前在 2.4 上做过这样的事情,应该是需要自己实现
作者: Godbach 发布时间: 2010-11-22
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28