首先需要 include 這個 header file
#include <linux/time.h>
然後使用下面的方式,搭配 printk 在kernel 端印出計算時間,
這邊我們取 microseconds (10-6)
struct timeval start_time, end_time;
unsigned long elapsed_time;
printk(KERN_ERR "#### measure time start %s ####\n", __func__);
do_gettimeofday(&start_time);
...
...
...
do_gettimeofday(&end_time);
// Calculate the executing time
elapsed_time = (end_time.tv_sec - start_time.tv_sec) * 1000000 +
(end_time.tv_usec - start_time.tv_usec);
printk(KERN_ERR "#### Elapsed time: %lu microseconds\n", elapsed_time);
printk(KERN_ERR "#### measure time end %s ####\n", __func__);
另外在 kernel 較新的版本當中,如果 do_gettimeofday() 無法使用,可以試試看下列方法
#include <linux/ktime.h>
#include <linux/types.h>
ktime_t start, end;
s64 elapsed_ns, elapsed_us;
start = ktime_get();
...
...
...
end = ktime_get();
elapsed_ns = ktime_to_ns(ktime_sub(end, start));
elapsed_us = ktime_to_us(elapsed_ns );
printk(KERN_ERR "#### Elapsed time: %lld microseconds\n", elapsed_us);
沒有留言:
發佈留言