nanospin_ns()

Ожидать без блокировки в течение заданного промежутка времени

Прототип:

#include <time.h>
int nanospin_ns( unsigned long nsec );

Аргументы:

nsec
Количество наносекунд, которые необходимо ожидать.

Библиотека:

libc

Описание:

Функция nanospin_ns() ожидает в течение nsec наносекунд без блокировки вызывающего потока.


Note: Функции nanospin*() предназначены для использования с аппаратурой, которая требует коротких временных задержек между операциями. Их следует использовать для задержки не более, чем в несколько миллисекунд. Для более долгих задержек следует использовать функции POSIX timer_*().

Из-за способа измерения времени функция может ожидать дольше заданного времени.


При первом вызове nanospin_ns() библиотека C вызывает nanospin_calibrate() с аргументом 0 (прерывания разрешены), если до этого функция не была вызвана явно.

Возвращаемое значение:

EOK
Успешное завершение.
E2BIG
Задержка, определяемая nsec, превышает 500 миллисекунд.

Note: Задержка более, чем в несколько миллисекунд, может не работать для некоторых процессоров. Для более долгих задержек следует использовать функции POSIX timer_*().

EINTR
Во время процедуры калибровки возникло слишком большое количество прерываний.
ENOSYS
Системный startup-* не инициализировал информацию о времени, необходимую для использования nanospin().

Классификация:

ЗОСРВ «Нейтрино»

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Смотри ниже
Обработчик сигналов
Да
В потоке
Да

Предостережения:

Необходимо использовать ожидание только тогда, когда это абсолютно необходимо для доступа к оборудованию.

Вызывать эту функцию из обработчика прерываний небезопасно, если функция nanospin_calibrate() еще не была вызвана.

Тематические ссылки:

nanosleep(), nanospin(), nanospin_calibrate(), nanospin_count(), nanospin_ns_to_count(), sched_yield(), sleep(), timer_create()




Предыдущий раздел: Описание API системной библиотеки