Получить или установить период системного таймера (системный тик)
#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 системной библиотеки