我有一段代码,我想以秒计算时间..虽然我在jiffies中得到时间,我怎么能在几秒钟内转换它?
这是我的内核代码:
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/jiffies.h>
#include <linux/timer.h>
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?
答案 0 :(得分:9)
对于您的用例,您可以使用:
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);
...
答案 1 :(得分:8)
来自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,对于常见的视频帧速率(PAL,25 HZ; NTSC,30 HZ)均匀划分的数字。
除以HZ。
答案 2 :(得分:0)
除了HZ
除外,还可以使用函数jiffies_to_timeval
它给出了一个秒和微秒的结构
微秒将始终是1000000/HZ
的倍数。