macOS: разрыв связи между драйвером и процессом после spindump
Я работаю над Daemon/Kext, который общается, используя общую очередь между пользователем и пространством ядра, которое называется IOSharedDataQueue
,
После того, как я несколько раз вручную запускал диагностику spindump, он не мог больше получать сообщения от моего драйвера IOKit во время ожидания IODataQueueDataAvailable
- похоже, что синхронизация между потребителем (kext) и производителем (мой процесс-демон) прерывается, и это нужно каким-то образом сбросить. Вопрос в том, как сбросить очередь и как обнаружить этот сценарий в процессе.
только после того, как я соединю процесс с отладчиком lldb и нажму continue
Похоже, очередь снова заработала.
Любая идея, как справиться с этой ситуацией изнутри процесса (программно).