mktime函数功能描述:此函数用于计算输入的时间距离1970:1:1:00:00:00
的秒数,返回的结果是秒数。
mktime文件包含
#include<linux/time.h>
mktime函数定义
在内核源码中的位置:linux-3.19.3/include/linux/time.h
函数定义格式:
static inline unsigned long mktime(const unsigned int year, const unsigned int mon, const unsigned int day, const unsigned int hour, const unsigned int min, const unsigned int sec)
{
return mktime64(year, mon, day, hour, min, sec);
}
mktime输入参数说明
- 输入的六个参数分别表示年、月、日、时、分、秒,是用国际时间表示的。
mktime返回参数说明
- 此函数的返回结果是无符号的长整型,所以有一定的表示范围,如果输入的时间距离
1970:1:1: 00:00:00
太长,会出现溢出现象,而此溢出的时间与机器的位数有关。
mktime实例解析
编写测试文件:mktime.c
头文件引用:
#include <linux/module.h>
#include<linux/time.h>
MODULE_LICENSE("GPL");
模块加载函数定义:
int __init mktime_init(void)
{
printk("mktime test begin\n"); //调用函数mktime将时间换算成秒
unsigned long result1=mktime(2015,12,6,13,20,10);
unsigned long result2=mktime(2015,12,6,13,20,12);
// 显示函数调用结果
printk("the result1 is :%ld\n", result1);
printk("the result2 is :%ld\n", result2);
return 0;
}
模块退出函数定义:
void __exit mktime_exit(void)
{
printk("Goodbye mktime\n");
}
模块加载、退出函数调用:
module_init(mktime_init);
module_exit(mktime_exit);
实例运行结果及分析:
执行命令insmod mktime.ko插入模块,然后输入命令dmesg -c查看内核输出信息,出现如图所示的结果。
结果分析:
从结果可以看出两个时间只差两秒,同输入的两个时间之差一致,可以反向粗略地计算验证转换的正确性。