clock_getres()

Получить разрешающую способность часов

Прототип:

#include <time.h>
int clock_getres( clockid_t clock_id,
struct timespec *res );

Аргументы:

clock_id
Идентификатор (тип) часов (clock ID), для которых необходимо получить разрешающую способность (разрешение), имеющий следующие значения:
CLOCK_REALTIME
стандартные часы, определенные в POSIX. Основанные на этих часах таймеры, разбудят процессор, если он находится в режиме энергосбережения.
CLOCK_SOFTTIME
эти часы активны, когда процессор не находится в режиме энергосбережения. Например, приложение, использующее таймер на базе CLOCK_SOFTTIME для сна, не "разбудит" процессор, когда приложение должно проснуться. Это позволит процессору перейти в режим энергосбережения. Когда процессор не находится в режиме энергосбережения таймеры типа CLOCK_SOFTTIME аналогичны типу CLOCK_REALTIME.
CLOCK_MONOTONIC
эти часы всегда увеличиваются с постоянной скоростью и не могут быть отрегулированы.
res
Указатель на структуру struct timespec, в которую функция clock_getres() сохранит разрешение. Функция устанавливает поле tv_sec member в значение 0, а в поле tv_nsec запишет разрешающую способность часов в наносекундах.

Библиотека:

libc

Описание:

Функция clock_getres() возвращает разрешающую способность часов с типом clock_id и записывает ее в параметр res.

Возвращаемое значение:

0
Успешное завершение.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EFAULT
Произошла ошибка при доступе к буферам.
EINVAL
Некорректный тип clock_id.

Примеры:

/*
* Программа выводит разрешающую способность часов
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main( void )
{
struct timespec res;
if ( clock_getres( CLOCK_REALTIME, &res ) == -1 )
{
perror( "clock get resolution" );
return (EXIT_FAILURE);
}
printf( "Разрешение часов равно %ld микросекунд.\n", res.tv_nsec / 1000 );
return (EXIT_SUCCESS);
}

Классификация:

POSIX 1003.1 Timers

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

clock_gettime(), clock_settime(), ClockPeriod(), struct timespec




Предыдущий раздел: Описание API системной библиотеки