您的位置:首页 > 运维架构 > Linux

测试Linux开机时间

2015-11-25 21:08 435 查看
<pre name="code" class="html"><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">在Linux内核有关时间的函数有2类:时钟函数以及jiffy。</span><span style="font-family: Arial, Helvetica, sans-serif;">时钟函数主要位于kernel/time/;</span>

本文通过对/kernel/printk.c文件中的vprintk函数进行分析,以系统调用的方式实现了获取内核的uptime。

代码如下


SYSCALL_DEFINE0(testuptime)
{
int this_cpu;
char tbuf[50];
unsigned long long t;
unsigned long nanosec_rem;

this_cpu = smp_processor_id();
t = cpu_clock(this_cpu);
nanosec_rem = do_div(t, 1000000000);
sprintf(tbuf, "[%5lu.%06lu] ",(unsigned long) t, nanosec_rem/ 1000);
printk(KERN_INFO "current cpu time is %s.\n",tbuf);
return 0;
}

测试结果如下



分析:系统调用中也是使用了printk函数进行输出,2个uptime一致的原因是vprintk在获取到cpu的时钟之后还在处理一些安全性的事务操作。


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: