nanospin_ns_to_count()

Преобразовать время в наносекундах в число итераций

Прототип:

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

Аргументы:

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

Библиотека:

libc

Описание:

Функция nanospin_ns_to_count() преобразует время в наносекундах, определяемое nsec, в число итераций, применимое для nanospin_count().


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

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

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

Количество времени ожидания.

Если возникла ошибка, функция возвращает -1, код ошибки записывается в errno.

Коды ошибок:

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

Примеры:

Ожидание минимум одну наносекунду:

#include <time.h>
#include <sys/syspage.h>
unsigned long time = 1;
...
/* Wake up the hardware, then wait for it to be ready. */
/* The C library invokes nanospin_calibrate if it hasn't already been called. */
nanospin_count( nanospin_ns_to_count( time ) );
/* Use the hardware. */
...

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

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

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

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

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

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

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

nanospin(), nanospin_calibrate(), nanospin_count(), nanospin_ns(), timer_create()




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