InterruptHookIdle()

Подключить обработчик перехода системы в состояние простоя

Прототип:

#include <sys/neutrino.h>
int InterruptHookIdle( void (*handler)( uint64_t *, struct qtime_entry * ),
unsigned flags );

Аргументы:

handler
Указатель на функцию-обработчик.
flags
Флаги, указывающие каким образом требуется подключить обработчик. 0 либо побитовое ИЛИ следующих значений: _NTO_INTR_FLAGS_END, _NTO_INTR_FLAGS_PROCESS, _NTO_INTR_FLAGS_TRK_MSK

Библиотека:

libc

Описание:

Системный вызов InterruptHookIdle() подключает обработчик handler перехода системы в состояние простоя (idle). Обычно это используется для реализации функций управления питанием.

Аргументы функции-обработчика handler:

uint64_t *
Указатель на время следующего срабатывания таймера, в наносекундах.
struct qtime_entry *
Указатель на системную страницу с информацией о времени.

Простейший обработчик простоя состоит из инструкции остановки процессора (halt).

Состояния блокировки:

Данный вызов неблокирующий.

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

Идентификатор обработчика прерывания.

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

Используйте полученный идентификатор в качестве аргумента функции InterruptDetach(), чтобы отключить обработчик.

Коды ошибок:

EAGAIN
Использованы все записи ядра о прерываниях.
EPERM
У процесса нет прав суперпользователя (root).

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

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

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

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

struct qtime_entry, InterruptAttach(), InterruptAttachEvent(), InterruptDetach(), InterruptHookTrace()




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