InterruptHookTrace()

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

Прототип:

#include <sys/neutrino.h>
int InterruptHookTrace( const struct sigevent * (*handler)( int ),
unsigned flags );

Аргументы:

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

Библиотека:

libc

Описание:

Системный вызов InterruptHookTrace() подключает обработчик трассировочных событий handler. Используется диагностической версией ядра.


Note: Для использования этой функции необходима диагностическая версия ядра ( procnto-instr).

Перед вызовом этой функции поток должен запросить привилегии ввода-вывода, вызвав:

ThreadCtl( _NTO_TCTL_IO, 0 );

Аргумент handler указывает псевдо обработчик прерывания, получающий трассировочные события от диагностической версии ядра. В качестве аргумента обработчик получает целое число, представляющее собой комбинацию индекса буфера и его порядкового номера; чтобы извлечь каждую из этих частей, полученное число передаётся в макросы _TRACE_GET_BUFFNUM() и _TRACE_GET_BUFFSEQ() (определены в <sys/trace.h>).

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

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

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

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

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

Коды ошибок:

EAGAIN
Использованы все записи ядра о прерываниях.
EFAULT
Ошибка при попытке ядра обратиться к предоставленным буферам.
EPERM
У процесса нет прав суперпользователя (root).
ENOTSUP
Используется не диагностическая версия ядра.

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

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

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

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

InterruptAttach(), TraceEvent()




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