Как получить текущий идентификатор процессора в macOS KEXT - PullRequest
0 голосов
/ 19 февраля 2020

Я нашел kern/processor.h файлы, которые включают current_processor ().

Но я не могу использовать current_processor(), даже если я включаю kern/processor.h файл.

Есть ли какие-либо методы, чтобы получить текущий процессор id?

Добавить 030420: Мне нужны любые методы, которые получают текущий идентификатор процессора, и методы, которые должны использоваться в KEXT. current_processor (), cpu_number () не работает на KEXT.

1 Ответ

0 голосов
/ 19 февраля 2020

Следующая функция объявлена ​​в <kern/cpu_number.h>:

extern int  cpu_number(void);

и возвращает индекс процессора, на котором в данный момент выполняется код.

Обратите внимание, что это в неподдерживаемый KPI, однако, вам нужно связать с com.apple.kpi.unsupported.

Также обратите внимание, что результат будет бессмысленным, если выгрузка не отключена, что, конечно, обычно не имеет место, только когда удерживается спин-блокировка или при работе в основном обработчике прерываний. Включенная предварительная выгрузка означает, что работающий поток может быть перепланирован в любое время, поэтому к тому времени, когда ваш код использует номер ЦП, полученный при вызове вышеуказанной функции, он, возможно, уже был перепланирован для запуска на другом CPU.

...