当前位置: 技术问答>linux和unix
如何获取开机以来的Tick时间
来源: 互联网 发布时间:2016-11-02
本文导语: 在内核编程中,使用什么函数来获取当前系统的Tick时间?? | 简单点的可以直接看看/proc/uptime的第一个结果 the uptime of the system (seconds), and the amount of time...
在内核编程中,使用什么函数来获取当前系统的Tick时间??
|
简单点的可以直接看看/proc/uptime的第一个结果
the uptime of the system (seconds), and the amount of time spent in idle process (seconds).
复杂点的可以把jiffies64从内核中导出到应用程序中。
以前网上找到的代码
#include
#include
#include
#include
#include
int main()
{
int i,fd;
unsigned long offset=0xc03947f8;//此处需要根据相应内核符号表位置作出修改
void *p;
volatile unsigned long *pjiffies;
offset-=0xc0000000;
fd=open("/dev/mem",O_RDONLY);
if(fd==-1)
{
perror("open:");
return -1;
}
printf("p=%pn",(off_t)(offset-offset%0x10000+0x80000000));
p=mmap(0,0x10000,PROT_READ,MAP_SHARED,fd,(off_t)(offset-offset%0x10000+0x80000000));
perror("mmap:");
printf("p=%lxn",p);
pjiffies=(volatile unsigned long*)((char*)p+offset%0x10000);
for(;;)
{
printf("addr=%lx,jiffies=%lxn",pjiffies,(unsigned long)(*pjiffies));
sleep(1);
}
return 0;
}
the uptime of the system (seconds), and the amount of time spent in idle process (seconds).
复杂点的可以把jiffies64从内核中导出到应用程序中。
以前网上找到的代码
#include
#include
#include
#include
#include
int main()
{
int i,fd;
unsigned long offset=0xc03947f8;//此处需要根据相应内核符号表位置作出修改
void *p;
volatile unsigned long *pjiffies;
offset-=0xc0000000;
fd=open("/dev/mem",O_RDONLY);
if(fd==-1)
{
perror("open:");
return -1;
}
printf("p=%pn",(off_t)(offset-offset%0x10000+0x80000000));
p=mmap(0,0x10000,PROT_READ,MAP_SHARED,fd,(off_t)(offset-offset%0x10000+0x80000000));
perror("mmap:");
printf("p=%lxn",p);
pjiffies=(volatile unsigned long*)((char*)p+offset%0x10000);
for(;;)
{
printf("addr=%lx,jiffies=%lxn",pjiffies,(unsigned long)(*pjiffies));
sleep(1);
}
return 0;
}
|
在内核编程中?
那很简单呀,不用函数,直接读全局变量jiffies就可以啦
那很简单呀,不用函数,直接读全局变量jiffies就可以啦