Я занимаюсь разработкой расширения ядра. Мне требуется использовать механизм ожидания и сигнала для ожидания определенных событий (логика программирования). Я пытаюсь использовать семафоры как часть расширения ядра для реализации методологии ожидания и сигнала.
Создание семафора вызывает панику ядра. Нужна помощь в выяснении правильной реализации. Дайте мне знать, если я использую его неправильно или есть какой-то другой более простой механизм ожидания и сигнал для разработки ядра.
Текущий код, который я использую.
semaphore_t CreateWaitEvent() {
semaphore_t sema;
//The below semaphore_create line is causing the kernel panic
if (semaphore_create(current_task(), &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. Я включил отладку ядра.
не знаю, что я делаю неправильно, чтобы вызвать панику ядра.