直接从CMOS读取系统时间
2007-06-19 16:35
363 查看
following code come from Linux Kernel 0.01
#define CMOS_READ(addr) ({ /
outb_p(0x80|addr,0x70); /
inb_p(0x71); /
})
#define BCD_TO_BIN(val) ((val)=((val)&15) + ((val)>>4)*10)
static void time_init(void)
{
struct tm time;
do {
time.tm_sec = CMOS_READ(0);
time.tm_min = CMOS_READ(2);
time.tm_hour = CMOS_READ(4);
time.tm_mday = CMOS_READ(7);
time.tm_mon = CMOS_READ(8)-1;
time.tm_year = CMOS_READ(9);
} while (time.tm_sec != CMOS_READ(0));
BCD_TO_BIN(time.tm_sec);
BCD_TO_BIN(time.tm_min);
BCD_TO_BIN(time.tm_hour);
BCD_TO_BIN(time.tm_mday);
BCD_TO_BIN(time.tm_mon);
BCD_TO_BIN(time.tm_year);
startup_time = kernel_mktime(&time);
}
#define CMOS_READ(addr) ({ /
outb_p(0x80|addr,0x70); /
inb_p(0x71); /
})
#define BCD_TO_BIN(val) ((val)=((val)&15) + ((val)>>4)*10)
static void time_init(void)
{
struct tm time;
do {
time.tm_sec = CMOS_READ(0);
time.tm_min = CMOS_READ(2);
time.tm_hour = CMOS_READ(4);
time.tm_mday = CMOS_READ(7);
time.tm_mon = CMOS_READ(8)-1;
time.tm_year = CMOS_READ(9);
} while (time.tm_sec != CMOS_READ(0));
BCD_TO_BIN(time.tm_sec);
BCD_TO_BIN(time.tm_min);
BCD_TO_BIN(time.tm_hour);
BCD_TO_BIN(time.tm_mday);
BCD_TO_BIN(time.tm_mon);
BCD_TO_BIN(time.tm_year);
startup_time = kernel_mktime(&time);
}
相关文章推荐
- 直接从CMOS读取系统时间
- QT在linux环境下读取和设置系统时间(通过system来直接调用Linux命令,注意权限问题)
- sql如何读取系统日期和时间
- C语言读取系统当前时间
- C++读取系统时间
- Delphi实现读取系统时间与日期完整实例
- 读取系统时间作为seed 随机打印数字
- Java时间戳与日期格式直接的互相转换(1:将系统日期格式转为时间戳。2:将指定日期转为时间戳。3:将系统时间戳转为日期格式。4将指定的时间戳转为日期格式)
- 如何读取Windows系统事件日志(获得上次关机时间、本次开机时间等)
- 读取和修改计算机系统时间
- java读取系统时间写入mysql数据库时,滞后八小时问题的解决 - ghostgarlic的专栏 - CSDNBlog
- 【hibernate】将SQL Server数据库里的表导出到本地Excel文件,并读取系统当前时间命名文件
- 直接读取MP3信息,专辑图片(非查系统数据库)
- 直接打印当前系统时间
- SQL读取系统时间的语法(转)
- linux:手动校准系统时间和硬件CMOS时间
- ntp/系统时钟/硬件时钟/双系统下计算机时间读取的问题
- 读取系统时间-----CTime类的应用和输出格式
- Java读取系统时间,慢一个月。
- js-读取系统时间