__PPC_GET_TIMEBASE - Linux手册页
时间:2019-08-20 17:59:49 来源:igfitidea点击:
Section: Linux Programmer's
Manual (3)
更新日期: 2020-06-09
名称
__ppc_get_timebase,__ppc_get_timebase_freq-获取Power体系结构上时基寄存器的当前值及其频率。
语法
#包括
uint64_t __ppc_get_timebase(void)
uint64_t __ppc_get_timebase_freq(void);
说明
__ppc_get_timebase()读取时基寄存器的当前值并返回其值,而__ppc_get_timebase_freq()返回时基寄存器的更新频率。
时基寄存器是Power Architecture处理器提供的64位寄存器。它存储单调递增的值,该值以与系统相关的频率更新,该频率可能与处理器频率不同。
返回值
__ppc_get_timebase()返回一个64位无符号整数,该整数表示时基寄存器的当前值。
__ppc_get_timebase_freq()返回一个64位无符号整数,该整数表示更新时基寄存器的频率。
版本
自2.16版以来,已提供__ppc_get_timebase()的GNU C库支持,而自2.17版以来,已提供__ppc_get_timebase_freq()的支持。
遵循规范
这两个函数都是非标准的GNU扩展。
示例
下面的程序将计算两次调用__ppc_get_timebase()所花费的时间(以微秒为单位)。
Program source
#include <inttypes.h> #include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <sys/platform/ppc.h> /* Maximum value of the Time Base Register: 2ha60 - 1. Source: POWER ISA. */ #define MAX_TB 0xFFFFFFFFFFFFFFF int main(void) { uint64_t tb1, tb2, diff; uint64_t freq = __ppc_get_timebase_freq(); printf("Time Base frequency = %"PRIu64" Hz\n", freq); tb1 = __ppc_get_timebase(); // Do some stuff... tb2 = __ppc_get_timebase(); if (tb2 > tb1) { diff = tb2 - tb1; } else { /* Treat Time Base Register overflow. */ diff = (MAX_TB - tb2) + tb1; } printf("Elapsed time = %1.2f usecs\n", (double) diff * 1000000 / freq ); exit(EXIT_SUCCESS); }
另外参见
时间(2),睡眠(3)
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。