Ссылка kern_control.h
Этот заголовок определяет API для передачи между расширением ядра и процессом за пределами ядра.
Включенные заголовки
<sys/appleapiopts.h><sys/kpi_mbuf.h>
-
ctl_deregister ctl_deregisterДоступный в OS X v10.4 через OS X v10.5Объявление
Objective C
errno_t ctl_deregister ( kern_ctl_ref kctlref );Параметры
kctlrefСсылка управления управления, чтобы не зарегистрироваться.
Возвращаемое значение
0 - Управление ядром было не зарегистрировано. EINVAL - ссылка управления ядром была недопустима. EBUSY - управлению ядром присоединили клиенты все еще.
Обсуждение
Не зарегистрируйте управление ядром. Расширение ядра должно не зарегистрироваться, это - управление (е) ядром перед разгрузкой. Если управлению ядром присоединят клиенты, то этот вызов перестанет работать.
Оператор импорта
Objective C
#include <kern_control.h>;Доступность
Доступный в OS X v10.4 через OS X v10.5.
-
ctl_enqueuedata ctl_enqueuedataДоступный в OS X v10.4 через OS X v10.5Объявление
Objective C
errno_t ctl_enqueuedata ( kern_ctl_ref kctlref, u_int32_t unit, void *data, size_t len, u_int32_t flags );Параметры
kctlrefСсылка управления управления ядром.
unitЧисло модуля ядра управляет экземпляром.
dataУказатель на данные для отправки.
lenДлина данных для отправки.
flagsОтправьте флаги. CTL_DATA_NOWAKEUP и CTL_DATA_EOR в настоящее время являются единственными поддерживаемыми флагами.
Возвращаемое значение
0 - Данные ставились в очередь, чтобы быть считанными клиентом. EINVAL - Недопустимые параметры. EMSGSIZE - буфер является слишком большим. ENOBUFS - очередь полна или нет никаких свободных mbufs.
Обсуждение
Отправьте данные от управления ядром до клиента.
Оператор импорта
Objective C
#include <kern_control.h>;Доступность
Доступный в OS X v10.4 через OS X v10.5.
-
ctl_enqueuembuf ctl_enqueuembufДоступный в OS X v10.4 через OS X v10.5Объявление
Objective C
errno_t ctl_enqueuembuf ( kern_ctl_ref kctlref, u_int32_t unit, mbuf_t m, u_int32_t flags );Параметры
kctlrefСсылка управления управления ядром.
unitЧисло модуля ядра управляет экземпляром.
mmbuf цепочка, содержащая данные для отправки клиенту.
flagsОтправьте флаги. CTL_DATA_NOWAKEUP и CTL_DATA_EOR в настоящее время являются единственными поддерживаемыми флагами.
Возвращаемое значение
0 - Данные ставились в очередь, чтобы быть считанными клиентом. EINVAL - Недопустимые параметры. ENOBUFS - очередь полна.
Обсуждение
Отправьте данные, хранившие в mbuf цепочке от управления ядром до клиента. Если ctl_enqueuembuf возвращает ошибку, вызывающая сторона ответственна за освобождение mbuf цепочки.
Оператор импорта
Objective C
#include <kern_control.h>;Доступность
Доступный в OS X v10.4 через OS X v10.5.
-
ctl_getenqueuespace ctl_getenqueuespaceДоступный в OS X v10.4 через OS X v10.5Объявление
Objective C
errno_t ctl_getenqueuespace ( kern_ctl_ref kctlref, u_int32_t unit, size_t *space );Параметры
kctlrefСсылка управления управления ядром.
unitЧисло модуля ядра управляет экземпляром.
spaceАдрес, куда возвратить текущее доступное пространство
Возвращаемое значение
0 - Успех; сумма пространства возвращается к вызывающей стороне. EINVAL - Недопустимые параметры.
Обсуждение
Получите сумму пространства, в настоящее время доступного для данных, которые будут отправлены от управления ядром до клиента.
Оператор импорта
Objective C
#include <kern_control.h>;Доступность
Доступный в OS X v10.4 через OS X v10.5.
-
ctl_register ctl_registerДоступный в OS X v10.4 через OS X v10.5Объявление
Objective C
errno_t ctl_register ( struct kern_ctl_reg *userkctl, kern_ctl_ref *kctlref );Параметры
userkctlСтруктура, определяющая ядро, управляет, чтобы быть присоединенной. ctl_connect обратный вызов должен быть указан, другие обратные вызовы дополнительные. Если ctl_connect обнуляется, ctl_register сбои с кодом ошибки EINVAL.
kctlrefПо успешному возврату kctlref будет содержать ссылку на присоединенное управление ядром. Эта ссылка используется, чтобы не зарегистрировать управление ядром. Эта ссылка будет также передана в обратным вызовам каждый раз, когда их вызывают.
Возвращаемое значение
0 - Управление ядром было зарегистрировано. EINVAL - регистрационная структура не была допустима. ENOMEM - был недостаточно памятью. EEXIST - контроллер с тем ID/модулем уже регистрируется.
Обсуждение
Зарегистрируйте управление ядром. Это позволит клиентам соединиться с управлением ядром с помощью сокета PF_SYSTEM.
Оператор импорта
Objective C
#include <kern_control.h>;Доступность
Доступный в OS X v10.4 через OS X v10.5.
-
Объявление
Objective C
typedef errno_t ( *ctl_connect_func)( kern_ctl_ref kctlref, struct sockaddr_ctl *sac, void **unitinfo);Параметры
kctlrefУправление касательно для управления ядром клиент соединяется с.
sacАдрес раньше соединялся с этим управлением. Поле sc_unit содержит число модуля экземпляра управления ядром, с которым соединяется клиент. Если CTL_FLAG_REG_ID_UNIT был установлен, когда управление ядром было зарегистрировано, sc_unit является ctl_unit kern_ctl_reg структуры. Если CTL_FLAG_REG_ID_UNIT не был установлен, когда управление ядром было зарегистрировано, sc_unit является динамично выделенным числом модуля нового экземпляра управления ядром, использующегося для этого соединения.
unitinfoЗаполнитель для указателя на дополнительные определяемые пользователем частные данные связался с этим экземпляром управления ядром. Когда остальная часть подпрограмм обратного вызова будет выполняться, эта непрозрачная информация будет предоставлена для пользователя. Например, это может использоваться для передачи указателя на специфичную для экземпляра структуру данных для пользователя для отслеживания состояния, связанные с этим экземпляром управления ядром.
Обсуждение
ctl_connect_func используется для получения уведомления о клиенте, соединяющемся с управлением ядром.
Оператор импорта
Objective C
#include <kern_control.h>;Доступность
Доступный в OS X v10.4 через OS X v10.5.
-
Объявление
Objective C
typedef errno_t ( *ctl_disconnect_func)( kern_ctl_ref kctlref, u_int32_t unit, void *unitinfo);Параметры
kctlrefУправление касательно для экземпляра управления ядром клиент разъединилось от.
unitЧисло модуля экземпляра управления ядром клиент разъединилось от.
unitinfoОпределяемые пользователем частные данные инициализируются ctl_connect_func обратным вызовом.
Обсуждение
ctl_disconnect_func используется для получения уведомления, которое клиент разъединил от управления ядром. Когда сокет закрывается, это обычно происходит. Если это - последний сокет, присоединенный к Вашему управлению ядром, можно не зарегистрировать управление ядром от этого обратного вызова.
Оператор импорта
Objective C
#include <kern_control.h>;Доступность
Доступный в OS X v10.4 через OS X v10.5.
-
Объявление
Objective C
typedef errno_t ( *ctl_getopt_func)( kern_ctl_ref kctlref, u_int32_t unit, void *unitinfo, int opt, void *data, size_t *len);Параметры
kctlrefУправление касательно управления ядром.
unitЧисло модуля ядра управляет экземпляром.
unitinfoОпределяемые пользователем частные данные инициализируются ctl_connect_func обратным вызовом.
optОпция сокета.
dataБуфер для копирования результатов в в. Может быть NULL, видеть обсуждение.
lenУказатель на длину буфера. Это должно быть установлено в длину буфера, используемого перед возвратом.
Обсуждение
ctl_getopt_func используется для обработки клиента, получают запросы опции сокета на уровень опции SYSPROTO_CONTROL. Буфер выделяется для хранения и передается Вашей функции. Длина того буфера также передается. По возврату необходимо установить *len в длину используемого буфера. В некоторых случаях данными может быть NULL. То, когда это происходит, *len должен быть установлен в длину, которую Вы возвратили бы, имело данные не NULL. Если буфер является слишком маленьким, возвратите ошибку.
Оператор импорта
Objective C
#include <kern_control.h>;Доступность
Доступный в OS X v10.4 через OS X v10.5.
-
Объявление
Objective C
typedef errno_t ( *ctl_send_func)( kern_ctl_ref kctlref, u_int32_t unit, void *unitinfo, mbuf_t m, int flags);Параметры
kctlrefУправление касательно управления ядром.
unitЧисло модуля экземпляра управления ядром клиент соединилось с.
unitinfoОпределяемые пользователем частные данные инициализируются ctl_connect_func обратным вызовом.
mДанные, отправленные клиентом в ядро, управляют в mbuf цепочке. Ваша функция ответственна за выпуск mbuf цепочки.
flagsФлаги, указанные клиентом при вызове send/sendto/sendmsg (MSG_OOB/MSG_DONTROUTE).
Обсуждение
ctl_send_func используется для получения данных, отправленных от клиента к управлению ядром.
Оператор импорта
Objective C
#include <kern_control.h>;Доступность
Доступный в OS X v10.4 через OS X v10.5.
-
Объявление
Objective C
typedef errno_t ( *ctl_setopt_func)( kern_ctl_ref kctlref, u_int32_t unit, void *unitinfo, int opt, void *data, size_t len);Параметры
kctlrefУправление касательно управления ядром.
unitЧисло модуля ядра управляет экземпляром.
unitinfoОпределяемые пользователем частные данные инициализируются ctl_connect_func обратным вызовом.
optОпция сокета.
dataУказатель на данные опции сокета. Данные были уже скопированы в в ядро для Вас.
lenДлина данных опции сокета.
Обсуждение
ctl_setopt_func используется для обработки опции сокета набора, требует уровень опции SYSPROTO_CONTROL.
Оператор импорта
Objective C
#include <kern_control.h>;Доступность
Доступный в OS X v10.4 через OS X v10.5.
Посмотрите раздел Overview выше для документации уровня заголовка.
-
Объявление
Objective C
typedef void * kern_ctl_ref;Обсуждение
Ссылка управления используется для отслеживания присоединенного управления ядром. Регистрация управления ядром создаст ссылку управления ядром. Эта ссылка требуется для отправки данных или удаления управления ядром. Эта ссылка будет передана обратным вызовам для того управления ядром.
Оператор импорта
Objective C
#include <kern_control.h>;Доступность
Доступный в OS X v10.4 через OS X v10.5.
-
Объявление
Objective C
struct ctl_event_data { u_int32_t ctl_id; /* Kernel Controller ID */ u_int32_t ctl_unit; };Поля
ctl_idID управления ядром.
ctl_unitБлок управления ядра.
Обсуждение
Эта структура используется для событий ядра KEV_CTL_SUBCLASS.
-
Объявление
Objective C
struct ctl_info { u_int32_t ctl_id; /* Kernel Controller ID */ char ctl_name[ 96]; /* Kernel Controller Name (a C string) */ };Поля
ctl_idID управления ядром, заполненный по возврату.
ctl_nameИмя элемента управления ядра для нахождения.
Обсуждение
Эта структура используется с CTLIOCGINFO ioctl для перевода от имени элемента управления ядра до ID управления.
-
Объявление
Objective C
struct kern_ctl_reg { /* control information */ char ctl_name[ 96]; u_int32_t ctl_id; u_int32_t ctl_unit; /* control settings */ u_int32_t ctl_flags; u_int32_t ctl_sendsize; u_int32_t ctl_recvsize; /* Dispatch functions */ ctl_connect_func ctl_connect; ctl_disconnect_func ctl_disconnect; ctl_send_func ctl_send; ctl_setopt_func ctl_setopt; ctl_getopt_func ctl_getopt; };Поля
ctl_nameСтрока идентификатора Пакета до байтов MAX_KCTL_NAME (включая конечный нуль). Эта строка не должна быть пустой.
ctl_idУправление ID может быть динамично присвоен или это может быть 32-разрядный код создателя, присвоенный DTS. Поскольку DTS присвоил код создателя, флаг CTL_FLAG_REG_ID_UNIT должен быть установлен. Для динамично присвоенного управления ID не устанавливайте флаг CTL_FLAG_REG_ID_UNIT. Значение динамично присвоенного управления, ID установлен в это поле, когда успешно выполняется регистрация.
ctl_unitОтдельное число модуля для регистрации многократных модулей, совместно использующих то же управление ID с DTS, присвоило код создателя, когда установлен флаг CTL_FLAG_REG_ID_UNIT. Это поле проигнорировано для динамично присвоенного управления ID.
ctl_flagsCTL_FLAG_PRIVILEGED и/или CTL_FLAG_REG_ID_UNIT.
ctl_sendsizeПереопределение значение по умолчанию отправляет размер. Если обнулено, значение по умолчанию отправляют, размер будет использоваться, и это значение по умолчанию установлено в это поле быть полученным вызывающей стороной.
ctl_recvsizeПереопределение значение по умолчанию получает размер. Если обнулено, значение по умолчанию получают размер, будет использоваться, и это значение по умолчанию установлено в это поле быть полученным вызывающей стороной.
ctl_connectУкажите функцию, которую вызовут каждый раз, когда клиент соединяется с управлением ядром. Это поле должно быть указано.
ctl_disconnectУкажите функцию, которую вызовут каждый раз, когда клиент разъединяется от управления ядром.
ctl_sendУкажите, что функция для обработки данных отправляет от клиента к управлению ядром.
ctl_setoptУкажите функцию для обработки операций опции сокета набора для управления ядром.
ctl_getoptУкажите, что функция для обработки получает операции опции сокета для управления ядром.
Обсуждение
Эта структура определяет свойства зарегистрированного управления ядром.
-
Объявление
Objective C
struct sockaddr_ctl { u_char sc_len; /* depends on size of bundle ID string */ u_char sc_family; /* AF_SYSTEM */ u_int16_t ss_sysaddr; /* AF_SYS_KERNCONTROL */ u_int32_t sc_id; /* Controller unique identifier */ u_int32_t sc_unit; /* Developer private unit number */ u_int32_t sc_reserved[5]; };Поля
sc_lenДлина структуры.
sc_familyAF_SYSTEM.
ss_sysaddrAF_SYS_KERNCONTROL.
sc_idУникальный идентификатор контроллера.
sc_unitКонтроллер ядра частное число модуля.
sc_reservedЗарезервированный, должен быть обнулен.
Обсуждение
Структура адреса контроллера используется для установления контакта между пользовательским клиентом и контроллером ядра. sc_id/sc_unit однозначно определяют каждый контроллер. sc_id является уникальным идентификатором, присвоенным контроллеру. Идентификатор может быть присвоен системой в регистрационное время или быть 32-разрядным кодом создателя, полученным из Apple Computer. sc_unit является числом модуля для этого sc_id и конфиденциально используется контроллером ядра для идентификации нескольких экземпляров контроллера.
Посмотрите раздел Overview выше для документации уровня заголовка.
-
Объявление
Objective C
#define CTL_DATA_EOR 0x2 #define CTL_DATA_NOWAKEUP 0x1 #define CTL_FLAG_PRIVILEGED 0x1 #define CTL_FLAG_REG_ID_UNIT 0x2 #define CTL_FLAG_REG_SOCK_STREAM 0x4 #define CTLIOCGCOUNT _IOR('N', 2, int) /* get number of control structures registered */ #define CTLIOCGINFO _IOWR('N', 3, struct ctl_info) /* get id from name */ #define KEV_CTL_DEREGISTERED 2 /* a controller disappears */ #define KEV_CTL_REGISTERED 1 /* a new controller appears */ #define KEV_CTL_SUBCLASS 2 #define MAX_KCTL_NAME 96Константы
-
CTL_DATA_EORCTL_DATA_EORФлаг CTL_DATA_EOR может использоваться для ставить в очередь данных и ставить в очередь функции mbuf для маркировки конца записи.
Доступный в OS X v10.4 через OS X v10.5.
-
CTL_DATA_NOWAKEUPCTL_DATA_NOWAKEUPФлаг CTL_DATA_NOWAKEUP может использоваться для ставить в очередь данных и ставить в очередь функции mbuf, чтобы указать, что процесс еще не должен быть разбужен. Это полезно, когда Вы хотите ставить в очередь данные с помощью больше чем одного вызова, но только хотеть разбудить клиент после того, как все данные ставились в очередь.
Доступный в OS X v10.4 через OS X v10.5.
-
CTL_FLAG_PRIVILEGEDCTL_FLAG_PRIVILEGEDФлаг CTL_FLAG_PRIVILEGED передается в ctl_flags. Если этот флаг установлен, только привилегированные процессы могут присоединить к этому управлению ядром.
Доступный в OS X v10.4 через OS X v10.5.
-
CTL_FLAG_REG_ID_UNITCTL_FLAG_REG_ID_UNITФлаг CTL_FLAG_REG_ID_UNIT передается, чтобы указать, что должен использоваться указанный ctl_id. Если этот флаг не будет присутствовать, то уникальный ctl_id будет динамично присвоен Вашему управлению ядром. CTLIOCGINFO ioctl может использоваться клиентом для нахождения динамично присвоенного ID на основе имени элемента управления указанным в ctl_name.
Доступный в OS X v10.4 через OS X v10.5.
-
CTL_FLAG_REG_SOCK_STREAMCTL_FLAG_REG_SOCK_STREAMИспользуйте флаг CTL_FLAG_REG_SOCK_STREAM, когда клиент должен будет открыть сокет типа SOCK_STREAM для передачи с управлением ядром. Ядром по умолчанию сокеты управления имеют тип SOCK_DGRAM.
Доступный в OS X v10.4 через OS X v10.5.
-
CTLIOCGCOUNTCTLIOCGCOUNTCTLIOCGCOUNT ioctl может использоваться для определения числа зарегистрированных контроллеров ядра.
Доступный в OS X v10.2 через OS X v10.5.
-
CTLIOCGINFOCTLIOCGINFOCTLIOCGINFO ioctl может использоваться для преобразования имени элемента управления ядра в ID управления ядром.
Доступный в OS X v10.4 через OS X v10.5.
-
KEV_CTL_DEREGISTEREDKEV_CTL_DEREGISTEREDКод события, указывающий контроллер, был не зарегистрирован. Часть данных будет содержать ctl_event_data.
Доступный в OS X v10.2 через OS X v10.5.
-
KEV_CTL_REGISTEREDKEV_CTL_REGISTEREDКод события, указывающий новый контроллер, был зарегистрирован. Часть данных будет содержать ctl_event_data.
Доступный в OS X v10.2 через OS X v10.5.
-
KEV_CTL_SUBCLASSKEV_CTL_SUBCLASSПодкласс события ядра для ядра управляет событиями.
Доступный в OS X v10.2 через OS X v10.5.
-
MAX_KCTL_NAMEMAX_KCTL_NAMEИмена элементов управления ядра больше не должны быть, чем MAX_KCTL_NAME.
Доступный в OS X v10.4 через OS X v10.5.
-
