Spec-Zone .ru
спецификации, руководства, описания, API
ADC домой > Ссылочная библиотека> Ссылка> Дарвин> Разное пространство пользователя ссылка API

 


kern_event.h

Включает:
<sys/appleapiopts.h>
<sys/ioccom.h>
<sys/sys_domain.h>

Введение

Этот заголовок определяет функции в ядре для генерации событий ядра, а также функций для получения событий ядра с помощью сокета события ядра.



Структуры и объединения


kern_event_msg


struct kern_event_msg { 
    u_long total_size; /* Size of entire event msg */
    u_long vendor_code; /* For non-Apple extensibility */
    u_long kev_class; /* Layer of event source */
    u_long kev_subclass; /* Component within layer */
    u_long id; /* Monotonically increasing value */
    u_long event_code; /* unique code */
    u_long event_data[1]; /* One or more data longwords */
};  
Поля
total_size
Общий размер сообщения о событии ядра включая заголовок.
vendor_code
Код поставщика указывает, какой поставщик генерировал событие ядра. Это дает каждому поставщику уникальный набор классов и подклассов для использования. Используйте SIOCGKEVVENDOR ioctl для поиска кодов поставщиков для поставщиков кроме Apple. Apple использует KEV_VENDOR_APPLE.
kev_class
Класс события ядра.
kev_subclass
Подкласс события ядра.
id
Монотонно увеличивающая стоимость.
event_code
Код события.
event_data
Любые дополнительные данные об этом событии. Формат будет зависеть от vendor_code, kev_class, kev_subclass, и event_code. Длина event_data может быть определена с помощью total_size - KEV_MSG_HEADER_SIZE.
Обсуждение

Эта структура предварительно ожидается ко всем событиям ядра. Эта структура используется для определения формата остатка от события ядра. Эта структура появится на всех сообщениях, полученных на сокете события ядра. Для регистрации события ядра немного отличающаяся структура используется.


kev_request


struct kev_request { 
    u_long vendor_code; 
    u_long kev_class; 
    u_long kev_subclass; 
};  
Поля
total_size
Общий размер сообщения о событии ядра включая заголовок.
vendor_code
Будут проигнорированы все события ядра, не соответствующие этот код поставщика. KEV_ANY_VENDOR может использоваться для получения событий ядра с любым кодом поставщика.
kev_class
Будут проигнорированы все события ядра, не соответствующие этот класс. KEV_ANY_CLASS может использоваться для получения событий ядра с любым классом.
kev_subclass
Будут проигнорированы все события ядра, не соответствующие этот подкласс. KEV_ANY_SUBCLASS может использоваться для получения событий ядра с любым подклассом.
Обсуждение

Эта структура используется с SIOCSKEVFILT и SIOCGKEVFILT, чтобы установить и получить установку фильтра управления для сокета управления ядром.


kev_vendor_code


struct kev_vendor_code { 
    u_long vendor_code; 
    char vendor_string[200  ]; 
};  
Поля
vendor_code
Если будет тот, после создания SIOCGKEVVENDOR ioctl вызов, это будет заполнено в кодом поставщика.
vendor_string
Идентификатор стиля пакета.
Обсуждение

Эта структура используется с SIOCGKEVVENDOR ioctl для преобразования из строки, идентифицирующей kext или поставщика, в форме идентификатора пакета, к коду поставщика.

#defines


KEV_APPLESHARE_CLASS


#define KEV_APPLESHARE_CLASS 4 
Обсуждение

Класс событий ядра AppleShare.


KEV_IOKIT_CLASS


#define KEV_IOKIT_CLASS 2 
Обсуждение

Класс событий ядра IOKit.


KEV_IOKIT_CLASS


См. также:
KEV_SYSTEM_CLASS
#define KEV_SYSTEM_CLASS 3 
Обсуждение

Системный класс событий ядра.


KEV_MSG_HEADER_SIZE


#define KEV_MSG_HEADER_SIZE  
Обсуждение

Размер части заголовка kern_event_msg структуры. Это составляет все прямо до event_data. Размер данных может быть найден путем вычитания KEV_MSG_HEADER_SIZE из общего размера от kern_event_msg.


KEV_NETWORK_CLASS


#define KEV_NETWORK_CLASS 1 
Обсуждение

Сетевой класс событий ядра.


KEV_SYSTEM_CLASS


См. также:
KEV_IOKIT_CLASS
#define KEV_SYSTEM_CLASS 3 
Обсуждение

Системный класс событий ядра.


KEV_VENDOR_APPLE


#define KEV_VENDOR_APPLE 1 
Обсуждение

Apple генерировал использование событий ядра твердое кодированное значение кода поставщика 1. Сторонние события ядра используют динамично выделенный код поставщика. Код поставщика может быть найден с помощью SIOCGKEVVENDOR ioctl.


KEV_VENDOR_CODE_MAX_STR_LEN


#define KEV_VENDOR_CODE_MAX_STR_LEN 200 
Обсуждение

Это определяет, устанавливает максимальную длину строки, которая может использоваться для идентификации поставщика или kext при поиске кода поставщика.


SIOCGKEVFILT


#define SIOCGKEVFILT _IOR(
    'e', 3, struct kev_request) 
Обсуждение

Получите фильтр события ядра для этого сокета. События ядра, не соответствующие этот фильтр, не будут получены на этом сокете.


SIOCGKEVID


#define SIOCGKEVID _IOR(
    'e', 1, u_long) 
Обсуждение

Получите ID текущего события. Каждое сгенерированное событие будет иметь новую идею. Следующее событие, которое будет сгенерировано, будет иметь ID id+1.


SIOCGKEVVENDOR


#define SIOCGKEVVENDOR _IOWR(
    'e', 4, struct kev_vendor_code) 
Обсуждение

Поиск код поставщика для указанного поставщика. Если код поставщика для той строки поставщика не будет существовать, ENOENT будет возвращен.


SIOCSKEVFILT


#define SIOCSKEVFILT _IOW(
    'e', 2, struct kev_request) 
Обсуждение

Установите фильтр события ядра для этого сокета. События ядра, не соответствующие этот фильтр, не будут получены на этом сокете.

Последнее обновление: 20.06.2006