本文共 1237 字,大约阅读时间需要 4 分钟。
转自:
目前项目需要,需要对时间进行基准,基准的精度在微秒。下午老刘给我说不能用do_gettimeofday因为他的精度虽然可以到微秒但是是依靠jiffies的精度(在linux 2.6.27内核中这个jiffies的单位是1毫秒)来更新这个时间值的,晚上回来就试试。结果呵呵,原来是可以精确到微秒并且不是靠jiffies的精度来更新的。
如下了。
#include <linux/kernel.h>
#include <linux/module.h>#include <linux/init.h>#include <linux/time.h>MODULE_LICENSE("GPL");MODULE_AUTHOR("silence1214");// gloable variable declare/// time structstruct timeval tl;//function declarevoid time_frequent_test(void);// initialize the kernel moduleint init_module(void){ printk(KERN_INFO "enter into the kernel.../n"); time_frequent_test(); return 0;}// clean up the kernel modulevoid cleanup_module(void){ printk(KERN_INFO "away from the kernel .../n");}void time_frequent_test(void){ do_gettimeofday(&tl); printk(KERN_INFO "jiffies=%lu, sec=%lu, usec=%lu/n", jiffies, tl.tv_sec, tl.tv_usec); do_gettimeofday(&tl); printk(KERN_INFO "jiffies=%lu, sec=%lu, usec=%lu/n", jiffies, tl.tv_sec, tl.tv_usec); do_gettimeofday(&tl); printk(KERN_INFO "jiffies=%lu, sec=%lu, usec=%lu/n", jiffies, tl.tv_sec, tl.tv_usec);}