Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка kern_control.h

Опции
Развертывание Target:

На этой странице

Ссылка 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.