Linux内核API get_seconds

get_seconds函数功能描述:用于获得当前系统内核的时间,该时间是距离1970年1月1日0时0分0秒的整秒数。

get_seconds文件包含

#include<linux/timekeeping.h>

get_seconds函数定义

在内核源码中的位置:linux-3.19.3/kernel/time/timekeeping.c

函数定义格式:unsigned long get_seconds(void)

get_seconds输入参数说明

  • 该函数不需要任何参数。

get_seconds返回参数说明

  • 函数返回值类型是无符号长整型,表示内核时间的整秒数,当当前时间距离1970:1:1:00:00:00太长时,结果可能溢出,而此溢出的时间与所用机器的unsigned long类型的长度有关。

get_seconds实例解析

编写测试文件:get_seconds.c

头文件引用:

#include <linux/module.h>
#include<linux/time.h>
MODULE_LICENSE("GPL");

模块加载函数定义:

int __init get_seconds_init(void)
{
    printk("get_seconds begin.\n");
    unsigned long result=get_seconds( );                 //调用函数获得系统内核时间(秒数)
    printk("the get_seconds result is: %lu\n", result); //显示内核时间(秒数)
    printk("get_seconds over.\n");
    return 0;
}

模块退出函数定义:

void __exit get_seconds_exit(void)
{
    printk("Goodbye get_seconds\n");
}

模块加载、退出函数调用:

module_init(get_seconds_init);
module_exit(get_seconds_exit);

实例运行结果及分析:

执行命令insmod get_seconds.ko插入内核模块,输入命令dmesg -c查看内核输出信息,出现如图所示结果。

Linux内核API get_seconds

结果分析:

从图可以看出当前系统内核的时间,将秒数粗略的换算成年月日可以验证函数的正确性。1449368340s大约是45年。

赞(1)
未经允许不得转载:极客笔记 » Linux内核API get_seconds
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址