Главная » 2017 » Ноябрь » 17 » man 2 clock_settime
01:28
man 2 clock_settime

SEO sprint - Всё для максимальной раскрутки!





ИМЯ


clock_getres, clock_gettime, clock_settime - функции часов и времени



ОБЗОР


#include <time.h>

int clock_getres(clockid_t clk_id, struct timespec *res);

int clock_gettime(clockid_t clk_id, struct timespec *tp);

int clock_settime(clockid_t clk_id, const struct timespec *tp);

Компонуется при указании параметра -lrt (только для glibc до версии 2.17).

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

clock_getres(), clock_gettime(), clock_settime():
_POSIX_C_SOURCE >= 199309L



ОПИСАНИЕ


Функция clock_getres() определяет разрешающую способность (точность) заданных в
clk_id часов, и, если res не равно NULL, сохраняет её в struct timespec, указанную
в res. Точность часов зависит от реализации и не может быть настроена определённым
процессом. Если значение времени, указанное в аргументе tp функции
clock_settime(), не кратно res, то оно усекается до кратного res.

Функции clock_gettime() и clock_settime() получают и устанавливают время указанных
часов clk_id.

Аргументы res и tp представляют структуру timespec, определённую в <time.h>:

struct timespec {
time_t tv_sec; /* секунды */
long tv_nsec; /* наносекунды */
};

Аргумент clk_id представляет идентификатор определённых часов, над которыми
производится действие. Часы могут использоваться системой в целом и поэтому видимы
всем процессам или конкретного процессу, если они отсчитывают время только в
пределах одного процесса.

Все реализации поддерживают системные часы реального времени, которые имеют
идентификатор CLOCK_REALTIME. Их время представляется в секундах и наносекундах с
начала Эпохи. Когда их время изменяется, на таймеры с относительными интервалами
это никак не влияет, но таймеры с абсолютной точкой во времени учитывают это.

Может быть реализовано много часов. Представление соответствующих значений времени
и влияние на таймеры не определено.

В последних версиях glibc и ядра Linux поддерживаются следующие часы:

CLOCK_REALTIME
Часы системы, отсчитывающие реальное (т. е., бытовое) время. Для настройки
этих часов требуются соответствующие права. Данные часы подвержены скачкам
системного времени (например, если системный администратор вручную изменяет
время) и постепенной подгонке, выполняемой adjtime(3) и NTP.

вручную изменил время), но на них влияет постепенная подгонка, выполняемая
adjtime(3) и NTP.

CLOCK_MONOTONIC_COARSE (начиная с Linux 2.6.32; есть только в Linux)
Более быстрая, но менее точная версия CLOCK_MONOTONIC. Используйте, если
нужны не очень точные метки времени, но очень быстро. Требуется поддержка в
архитектуре и, вероятно, поддержка архитектурой этого флага в vdso(7).

CLOCK_MONOTONIC_RAW (начиная с Linux 2.6.28; есть только в Linux)
Похожи на CLOCK_MONOTONIC, но предоставляют прямой доступ к аппаратным
часам, которые не подводятся NTP или постепенной подгонкой, выполняемой
adjtime(3).

CLOCK_BOOTTIME (начиная с Linux 2.6.39; есть только в Linux)
Идентичны CLOCK_MONOTONIC, но также содержат любое время, на которое
система была приостановлена (suspended). Это позволяет приложениям получить
учитывающие приостановку монотонные часы без обращения к сложностям
CLOCK_REALTIME, которые могут быть неоднородны, если время изменили с
помощью settimeofday(2).

CLOCK_PROCESS_CPUTIME_ID (начиная с Linux 2.6.12)
Настраиваемые для каждого процесса часы ЦП (измеряют время ЦП, затраченное
всеми нитями процесса).

CLOCK_THREAD_CPUTIME_ID (начиная с Linux 2.6.12)
Часы, работающие на ЦП, для каждой нити.



ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ


При успешном выполнении функции clock_gettime(), clock_settime() и clock_getres()
возвращают 0, или -1 в случае ошибки (errno устанавливается в соответствующее
значение).



ОШИБКИ


EFAULT tp указывает за пределы доступного адресного пространства.

EINVAL Заданное в clk_id значение не поддерживается на этой системе.

EPERM Для установки указанных часов с помощью clock_settime() недостаточно прав.



ВЕРСИИ


Данные системные вызовы впервые появились в Linux 2.6.



АТРИБУТЫ


Описание терминов данного раздела смотрите в attributes(7).

┌─────────────────────────────────┬──────────────────────┬──────────┐
│Интерфейс │ Атрибут │ Значение │
├─────────────────────────────────┼──────────────────────┼──────────┤
│clock_getres(), clock_gettime(), │ Безвредность в нитях │ MT-Safe │
│clock_settime() │ │ │
└─────────────────────────────────┴──────────────────────┴──────────┘



СООТВЕТСТВИЕ СТАНДАРТАМ


POSIX.1-2001, POSIX.1-2008, SUSv2.



ДОСТУПНОСТЬ


На POSIX-системах, в которых доступны эти функции, символ _POSIX_TIMERS,
использовала регист

Категория: (2) Системные вызовы ядра (функции языка Си) | Просмотров: 614 | Добавил: Администратор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar