Получить или установить период системного таймера (системный тик)
#include <sys/neutrino.h>int ClockPeriod( clockid_t id,const struct _clockperiod *new,struct _clockperiod *old,int reserved );int ClockPeriod_r( clockid_t id,const struct _clockperiod *new,struct _clockperiod *old,int reserved );
NULL
, или указатель на структуру struct _clockperiod, содержащую значение системного тика.NULL
, или указатель на структуру struct _clockperiod, в которой функция сохранит текущее значение системного тика, который действовал до изменения его на значение из new.0
.libc
Системные вызовы ClockPeriod() и ClockPeriod_r() позволяют установить или получить системного тика.
Для получения периода системного таймера рекомендуется использовать функцию clock_getres() вместо прямого системного вызова. |
Данные функции идентичны за исключением способа возврата ошибок.
|
Все таймерные функции вида timer_*() работают с точностью, не превышающей значение системного тика. Каждый момент срабатывания системного таймера называется tick. Начальное значение (значение по умолчанию) системного тика зависит от тактовой частоты ЦПУ:
Частота ЦПУ: | Значение по умолчанию: |
---|---|
≥ 40MHz | 1 миллисекунда |
< 40MHz | 10 миллисекунд |
Слишком малое значение системного тика приводит к увеличению числа прерываний от таймера и нагрузки на систему. В связи с этим минимальное значение системного тика ограничено 10
микросекундами.
При попытке установить значение системного тика, которое ядро считает небезопасным, вызов завершается с ошибкой EINVAL
. Квант времени для дисциплин планирования (дисциплин диспетчеризации) для типов “round-robin” и “other” всегда в четыре раза больше значения системного тика и не может быть изменен.
Данные вызовы являются неблокируемыми.
-1
, код ошибки записывается в errno. Любое другое возвращенное значение считается успешным завершением.EOK
возвращается при успешном завершении. Функция НЕ устанавливает errno. При возникновении ошибки функция возвращает один из представленных ниже кодов.
ЗОСРВ «Нейтрино»
struct _clockperiod, clock_getres(), ClockAdjust()
Предыдущий раздел: Описание API системной библиотеки