Считать или установить часы системного времени
#include <sys/neutrino.h>int ClockTime( clockid_t id,const uint64_t *new,uint64_t *old );int ClockTime_r( clockid_t id,const uint64_t *new,uint64_t *old );
CLOCK_REALTIME
или CLOCK_MONOTONIC
, которое является идентификатором часов системного времени, или идентификатором часов, возвращаемым ClockId().NULL
, или указатель на абсолютное время (в наносекундах) для установки часов. Параметр игнорируется, если id имеет значение CLOCK_MONOTONIC
.NULL
, или указатель на место, где будет храниться текущее время до того, как оно будет изменено новым, отличным от NULL
значением new.libc
Этот системный вызов считывает или устанавливает системные часы с идентификатором Часы с идентификатором CLOCK_REALTIME
или CLOCK_MONOTONIC
поддерживают системное время.
Функции ClockTime() и ClockTime_r() идентичны, но по разному указывают на ошибки.
![]() | Вместо данного системного вызова рекомендуется использовать функции clock_gettime() или clock_settime(). |
Если параметр new не равен NULL
, тогда он содержит абсолютное время в наносекундах для установки системных часов. Установка изменит значение программных часов и не влияет на аппаратные часы (RTC), которые поддерживают время после отключения питания ЭВМ.
![]() | Для установки системного времени требуется наличие привилегий суперпользователя. Вы не можете установить время, если id равен CLOCK_MONOTONIC . |
Если ClockTime() используется для установки времени дня, то ядро проверяет, установлено ли в 0 поле системной страницы SYSPAGE_ENTRY( qtime )->boot_time. Если это так, то ядро запишет в него соответствующее значение. Стартовая программа ОС startup имеет опцию -T, которая предотвращает установку этого поля и тогда ядро установит это поле при первом вызове ClockTime() для изменения времени дня. Это полезная возможность, если аппаратные часы RTC не находятся в UTC.
После установки системное время увеличивается на некоторое количество наносекунд в зависимости от разрешения системного таймера. Запросить или изменить это разрешение можно с помощью функции - системного вызова ClockPeriod().
Эти вызовы не блокируются.
-1
, код ошибки записывается в errno. Любое другое возвращенное значение считается успешным завершением.EOK
возвращается при успешном завершении. Функция НЕ устанавливает errno. При возникновении ошибки функция возвращает один из представленных ниже кодов.
CLOCK_REALTIME
или CLOCK_MONOTONIC
. ЗОСРВ «Нейтрино»
clock_gettime(), clock_settime(), ClockAdjust(), ClockPeriod(), SYSPAGE_ENTRY()
Предыдущий раздел: Описание API системной библиотеки