table of contents
- bullseye-backports 4.17.0-2~bpo11+1
__PPC_GET_TIMEBASE(3) | Руководство программиста Linux | __PPC_GET_TIMEBASE(3) |
ИМЯ¶
__ppc_get_timebase, __ppc_get_timebase_freq - возвращают текущее значение базового регистра времени на архитектуре Power и его частоту
СИНТАКСИС¶
#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> /* Maximum value of the Time Base Register: 2^60 - 1.
Source: 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); }
СМ. ТАКЖЕ¶
ЗАМЕЧАНИЯ¶
Эта страница является частью проекта Linux man-pages версии 5.10. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу https://www.kernel.org/doc/man-pages/.
ПЕРЕВОД¶
Русский перевод этой страницы руководства был сделан Yuri Kozlov <yuray@komyakino.ru>
Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.
Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.
9 июня 2020 г. | Библиотека GNU C |