Jiffies – 如何计算秒数?

我有一段代码,我想以秒计算时间..虽然我在jiffies有时间,我怎么能在几秒钟内转换它?

这是我的内核代码:

#include  #include  #include  #include  unsigned long js, je, tet; int netblock_init_module(void){ js = jiffies; printk("\n[Jiffies start Time : %lu]\nModule Started.\n", js); return 0; } void netblock_cleanup_module(void) { je = jiffies; printk("\n[Jiffies End Time : %lu]\nModule Removed.\n", je); tet = je - js; printk("\nEnd Time [%lu] - Start Time [%lu]: \nTotlal elapsed Time [%lu]\n",js,je, tet); } module_init(netblock_init_module); module_exit(netblock_cleanup_module); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("JIFFIES EXAMPLE"); MODULE_AUTHOR("RAHEEL"); 

我得到的输出就像这样:

$ insmod jiffexample.ko

[Jiffies开始时间:13363583]

模块开始

$ rmmod jiffexample.ko

[Jiffies结束时间:13361588]

模块已删除。

结束时间13361588 – 开始时间1336358

经过的总时间[1605]

现在我希望以秒为单位获得转换时间..如何以秒为单位转换此经过时间1605? 或者你可以告诉我一秒钟有多少个jiffies?

对于您的用例,您可以使用以下任一方法:

jiffies_to_msecs或jiffies_to_usecs


以下所有转换例程:

来自include / linux / jiffies.h

 ... /* * Convert various time units to each other: */ extern unsigned int jiffies_to_msecs(const unsigned long j); extern unsigned int jiffies_to_usecs(const unsigned long j); extern unsigned long msecs_to_jiffies(const unsigned int m); extern unsigned long usecs_to_jiffies(const unsigned int u); extern unsigned long timespec_to_jiffies(const struct timespec *value); extern void jiffies_to_timespec(const unsigned long jiffies, struct timespec *value); extern unsigned long timeval_to_jiffies(const struct timeval *value); extern void jiffies_to_timeval(const unsigned long jiffies, struct timeval *value); extern clock_t jiffies_to_clock_t(unsigned long x); extern unsigned long clock_t_to_jiffies(unsigned long x); extern u64 jiffies_64_to_clock_t(u64 x); extern u64 nsec_to_clock_t(u64 x); extern u64 nsecs_to_jiffies64(u64 n); extern unsigned long nsecs_to_jiffies(u64 n); ... 

来自http://www.kernel.org/doc/man-pages/online/pages/man7/time.7.html :

jiffy的大小由内核常量HZ的值决定。

HZ的值因内核版本和硬件平台而异。 在i386上,情况如下:在内核到2.4.x之间,HZ为100,jiffy值为0.01秒; 从2.6.0开始,HZ升至1000,给出了0.001秒的瞬态。 从内核2.6.13开始,HZ值是内核配置参数,可以是100,250(默认值)或1000,产生的jiffies值分别为0.01,0.004或0.001秒。 从内核2.6.20开始,可以获得另一个频率:300,这是一个均匀分配公共video帧速率的数字(PAL,25 HZ; NTSC,30 HZ)。

只差HZ。

除了除以HZ ,还可以使用函数jiffies_to_timeval
它给出了一个秒和微秒的结构。
微秒将始终是1000000/HZ的倍数。