测试Linux开机时间

<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的时钟之后还在处理一些安全性的事务操作。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值