Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 5.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
873.98 Кб
Скачать

Таймеры

ОС QNX Neutrino обеспечивает полный набор таймеров стандарта POSIX.

Модель таймеров стандарта POSIX имеет весьма широкие возможности. Срок действия таймера может определяться следующими параметрами:

  • абсолютной датой;

  • относительной датой (например, "n наносекунд от настоящего момента");

  • циклическим периодом (например, "каждые n наносекунд").

Так как таймеры являются разновидностью источников событий в ОС, они также используют систему передачи событий. Это дает возможность приложению потребовать, чтобы все события, реализуемые в QNX Neutrino, доставлялись при возникновении таймаута.

В ОС QNX Neutrino используется вызов ядра TimerTimeout(), позволяющий приложению задать список состояний блокировки, при которых должен быть запущен соответствующий таймаут. В результате, когда приложение делает запрос ядру, ядро автоматически включает установленный таймаут в том случае, если приложение может быть блокировано по какому-либо из заданных состояний.

В табл. 2.22 приведены функции, используемые при работе с таймерами.

Таблица 2.22. Вызовы микроядра и соответствующие POSIX-вызовы

Вызов микроядра

POSlX-вызов

Описание

TimerAlarm()

alarm()

Установить для процесса "будильник"

TimerCreate()

timer_create()

Создать интервальный таймер

TimerDestroy()

timer_delete()

Уничтожить интервальный таймер

TimerGettime()

timer_gettime()

Получить остаток времени в интервальном таймере

TimerGetoverrun()

timer_getoverrun()

Получить количество переполнений интервального таймера

TimerSettime()

timer_settime{)

Запустить интервальный таймер

TimerTimeout()

sleep(), nanosleep(), sigtimed-wait(), pthread_cond_timedwait(), pthread_mutex_trylock(), intr_timed_wait()

Включить таймаут ядра для какого-либо состояния блокировки

34