Semaphore_create вызывает панику ядра

#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. Я включил отладку ядра.

не знаю, что я делаю неправильно, чтобы вызвать панику ядра.