|
5#

楼主 |
发表于 2009-9-28 16:51:44
|
只看该作者
设置系统时间
通常,设备驱动程序不需要设置年,月,日,时,分,秒形态的系统时间,但是也不能排除有这种可能性,系统还是为此提供了几个函数。下面是与系统时间相关的函数和结构体:
struct timeval : 处理时间的结构体 do_gettimeofday() , do_settimeofday() 函数与应用程序中使用的 gettimeofday() 函数或 settimeofday() 函数具有相同的功能。上述函数没有使用常用的时间格式,即其单位不是年,月,日,时,分,秒等,而是把当前时间换算为秒。
mktime() 是辅助函数,即输入年,月,日,时,分,秒后换算为秒。(详见:http://www.groad.net/bbs/read.php?tid-1224.html)
在 2.4 内核中,do_gettimeofday() 和 do_settimeofday() 函数的变量类型均使用 struct timeval 结构体;
在 2.6 内核中,do_gettimeofday() 函数的变量类型为 struct timeval ,而 do_settimeofday() 函数的变量类型为 struct timespec 。
系统时间的设定:
设备驱动程序中设定系统时间时,系统整体的时间会改变,因此要特别注意。应用程序正在延迟时间,或者正在进行时间换算是,如果系统时间发生变化,就会处理错误信息。比如,在 2.6 内核中设置系统时间 2009年9月28日17 时 40 分 20 秒的方法。
timeval.tv_usec = 0;
timeval.tv_sec = (unsigned long) mktime (2009, 9, 28, 17, 40, 20);
do_settimeofday (&timeval); |
|