Other Alias
__ppc_get_timebase
ОБЗОР
#include <sys/platform/ppc.h>
uint64_t __ppc_get_timebase(void)
uint64_t __ppc_get_timebase_freq(void);
ОПИСАНИЕ
Функция __ppc_get_timebase() читает текущее значение базового регистра
времени (Time Base Register) и возвращает его значение, а
__ppc_get_timebase_freq() возвращает частоту обновления базового регистра
времени.
Базовый регистр времени — это 64-битный регистр процессоров с архитектурой Power. В нём хранится монотонно увеличивающееся значение, которое обновляется с зависимой от системы частотой, которая может отличаться от частоты процессора.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция __ppc_get_timebase() возвращает 64-битное беззнаковое целое,
которое представляет собой текущее значение базового регистра времени.
Функция __ppc_get_timebase_freq() возвращает 64-битное беззнаковое целое, которое представляет собой частоту, с которой изменяется базовый регистр времени.
ВЕРСИИ
Поддержка __ppc_get_timebase() в библиотеку GNU C было добавлена в версию 2.16, а __ppc_get_timebase_freq() доступна начиная с версии 2.17.
СООТВЕТСТВИЕ СТАНДАРТАМ
Эти функции являются расширениями GNU.
ПРИМЕР
Следующая программа вычисляет время в микросекундах, прошедшее между двумя
вызовами __ppc_get_timebase().
Исходный код программы
#include <inttypes.h> #include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <sys/platform/ppc.h> /* максимальное значение базового регистра времени: 2^60 - 1. Источник: POWER ISA. */ #define MAX_TB 0xFFFFFFFFFFFFFFF int main(void) { uint64_t tb1, tb2, diff; uint64_t freq = __ppc_get_timebase_freq(); printf("Базовая частота времени = %"PRIu64" Hz\n", freq); tb1 = __ppc_get_timebase(); // что-то делаем… tb2 = __ppc_get_timebase(); if (tb2 > tb1) { diff = tb2 - tb1; } else { /* базовый регистр времени переполнился */ diff = (MAX_TB - tb2) + tb1; } printf("Прошло = %1.2f мкс\n", (double) diff * 1000000 / freq ); exit(EXIT_SUCCESS); }