Ссылка 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
Число модуля ядра управляет экземпляром.
m
mbuf цепочка, содержащая данные для отправки клиенту.
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_id
ID управления ядром.
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_id
ID управления ядром, заполненный по возврату.
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_flags
CTL_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_family
AF_SYSTEM.
ss_sysaddr
AF_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_EOR
CTL_DATA_EOR
Флаг CTL_DATA_EOR может использоваться для ставить в очередь данных и ставить в очередь функции mbuf для маркировки конца записи.
Доступный в OS X v10.4 через OS X v10.5.
-
CTL_DATA_NOWAKEUP
CTL_DATA_NOWAKEUP
Флаг CTL_DATA_NOWAKEUP может использоваться для ставить в очередь данных и ставить в очередь функции mbuf, чтобы указать, что процесс еще не должен быть разбужен. Это полезно, когда Вы хотите ставить в очередь данные с помощью больше чем одного вызова, но только хотеть разбудить клиент после того, как все данные ставились в очередь.
Доступный в OS X v10.4 через OS X v10.5.
-
CTL_FLAG_PRIVILEGED
CTL_FLAG_PRIVILEGED
Флаг CTL_FLAG_PRIVILEGED передается в ctl_flags. Если этот флаг установлен, только привилегированные процессы могут присоединить к этому управлению ядром.
Доступный в OS X v10.4 через OS X v10.5.
-
CTL_FLAG_REG_ID_UNIT
CTL_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_STREAM
CTL_FLAG_REG_SOCK_STREAM
Используйте флаг CTL_FLAG_REG_SOCK_STREAM, когда клиент должен будет открыть сокет типа SOCK_STREAM для передачи с управлением ядром. Ядром по умолчанию сокеты управления имеют тип SOCK_DGRAM.
Доступный в OS X v10.4 через OS X v10.5.
-
CTLIOCGCOUNT
CTLIOCGCOUNT
CTLIOCGCOUNT ioctl может использоваться для определения числа зарегистрированных контроллеров ядра.
Доступный в OS X v10.2 через OS X v10.5.
-
CTLIOCGINFO
CTLIOCGINFO
CTLIOCGINFO ioctl может использоваться для преобразования имени элемента управления ядра в ID управления ядром.
Доступный в OS X v10.4 через OS X v10.5.
-
KEV_CTL_DEREGISTERED
KEV_CTL_DEREGISTERED
Код события, указывающий контроллер, был не зарегистрирован. Часть данных будет содержать ctl_event_data.
Доступный в OS X v10.2 через OS X v10.5.
-
KEV_CTL_REGISTERED
KEV_CTL_REGISTERED
Код события, указывающий новый контроллер, был зарегистрирован. Часть данных будет содержать ctl_event_data.
Доступный в OS X v10.2 через OS X v10.5.
-
KEV_CTL_SUBCLASS
KEV_CTL_SUBCLASS
Подкласс события ядра для ядра управляет событиями.
Доступный в OS X v10.2 через OS X v10.5.
-
MAX_KCTL_NAME
MAX_KCTL_NAME
Имена элементов управления ядра больше не должны быть, чем MAX_KCTL_NAME.
Доступный в OS X v10.4 через OS X v10.5.
-