#macos #locking #semaphore #kernel-extension
#macos #блокировка #семафор #ядро-расширение
Вопрос:
Я разрабатываю расширение ядра. Мне требуется использовать механизм ожидания и сигнала для ожидания определенных событий (логика программирования). Я пытаюсь использовать семафоры как часть расширения ядра для реализации методологии ожидания и сигнала.
Создание семафора вызывает панику ядра. Нужна помощь в определении правильной реализации. Дайте мне знать, если я использую его неправильно или если есть какой-либо другой более простой механизм для ожидания и подачи сигнала для разработки ядра.
Текущий код, который я использую.
semaphore_t CreateWaitEvent() {
semaphore_t sema;
//The below semaphore_create line is causing the kernel panic
if (semaphore_create(current_task(), amp;sema, SYNC_POLICY_FIFO, 0) != KERN_SUCCESS){
return NULL;
}
return sema;
}
void Wait(semaphore_t event) {
semaphore_wait(event);
}
void Signal(semaphore_t event) {
semaphore_signal(event);
}
Я запускаю это расширение ядра на виртуальной машине, используя программное обеспечение parallels на MacBookPro. Я включил отладку ядра.
не знаю, что я делаю неправильно, чтобы вызвать панику ядра.