Поддерживаемый KPIs
Q: Как я говорю, является ли функция ядра частью поддерживаемого KPI?
A: Как я говорю, является ли функция ядра частью поддерживаемого KPI?
Существует два основных критерия:
Функция появляется в заголовках платформы Ядра?
Функция экспортируется одним из поддерживаемых наборов символов KPI?
Проверка первого критерия проста: используйте свое любимое текстовое средство поиска, чтобы видеть, объявляется ли функция в заголовках платформы Ядра.
Существует два способа проверить второй критерий.
Если Вы уже создали KEXT, можно использовать
kextlibsинструмент для определения наборов символов KPI, которых это требует. Дополнительную информацию см. в странице справочника.Если Вы еще не создали KEXT, можно использовать сценарий FindKPI.py для определения набора символов KPI, если таковые имеются, для данного символа. Перечисление 1 показывает пример этого.
Перечисление 1 Используя FindKPI.py
$ ./FindKPI.py vnode_create lck_mtx_lock vnode_create com.apple.kpi.bsd lck_mtx_lock com.apple.kpi.libkern $ # You can also supply C++ class names. $ ./FindKPI.py OSDictionary IOMemoryDescriptor OSDictionary com.apple.kpi.libkern IOMemoryDescriptor com.apple.kpi.iokit |
Конечно, существуют исключения к каждому правилу. Например:
Заголовок
<sys/appleapiopts.h>определяет ряд переменных времени компиляции, использующихся для указания устойчивости определенного интерфейса. Некоторые из них — в частности__APPLE_API_EVOLVING,__APPLE_API_UNSTABLE,__APPLE_API_PRIVATEи__APPLE_API_OBSOLETE— используются для защиты KPIs, которые не являются 100%-й конюшней. Необходимо попытаться избежать такого KPIs, если это возможно.Чтобы проверить, зависите ли Вы от такого KPIs, определите переменную времени компиляции
__APPLE_API_STRICT_CONFORMANCE.Технический QA1574 Вопросов и ответов, 'Документы' платформы MAC ядра ошибка, которая могла бы ввести в заблуждение Вас в размышление, что платформа MAC ядра является поддерживаемым KPI.
com.apple.kpi.unsupportedKPI является мерой по совместимости, предназначенной для использования ограниченным количеством Apple KEXTs. Ваш KEXT не должен зависеть от этой неподдерживаемой функциональности.
Downloadables
Сценарий FindKPI.py («qa1575_FindKPI.zip», 1.3K)
История версии документа
| Дата | Примечания |
|---|---|
| 25.03.2008 | Новый документ, описывающий, как проверить, является ли функция ядра частью поддерживаемого KPI. |