Linux墙上时间

6.2.2  墙上时间

墙上时间,在系统启动过程中根据实时钟(RTC)芯片保存数据进行初始化,在系统运行期间由系统时钟维护并在合适的时刻和RTC芯片进行同步。墙上时间存储于系统核心变量xtime中,该变量记录了现实世界中的年月日格式的时间,以便内核对某些对象和事件作时间标记,如记录文件的创建时间、修改时间、上次访问时间,或者供用户进程通过系统调用来使用。

内核中使用struct timespec类型的变量xtime来记录墙上时间,该变量在文件src/kernel/time.c中的第564行声明如下:

struct timespec xtime __attribute__ ((aligned (16)));

其中,数据结构struct timespec在文件src/include/Linux/time.h中的第12行开始定义,代码如下:

struct timespec {       
time_t tv_sec;  /* seconds */ 
long  tv_nsec;  /* nanoseconds */ 
};

该结构用来表示当前时刻距UNIX时间基准1970/01/01/00:00:00的相对时间。其中成员变量tv_sec用来记录距标准时间1970/01/01/00:00:00的秒数,成员变量tv_nsec用来记录不足一秒的微秒值,其取值范围为0~999 999。

变量xtime的初值在系统初始化过程由函数time_init()进行设置,该函数通过读取系统实时钟芯片RTC的值来为变量xtime赋初值;该变量的值在系统运行过程中由系统时钟中断处理程序负责在每次时钟中断时进行更新。该变量的初始化语句如下。初始化详细分析请参见6.3节;对其值进行更新的操作请参见6.4.2小节。

xtime.tv_sec = get_cmos_time();
xtime.tv_nsec = (INITIAL_JIFFIES % HZ) * (NSEC_PER_SEC / HZ); 
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值