目前项目需要,需要对时间进行基准,基准的精度在微秒。下午老刘给我说不能用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 struct struct timeval tl; //function declare void time_frequent_test(void); // initialize the kernel module int init_module(void) { printk(KERN_INFO "enter into the kernel.../n"); time_frequent_test(); return 0; } // clean up the kernel module void 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); }
运行结果: