我正在研究Daemon / Kext,它使用称为IOSharedDataQueue
的用户和内核空间之间的共享队列进行通信。
我多次手动运行了转储诊断后,在等待IODataQueueDataAvailable
时,它无法再从IOKit驱动程序中获取消息-看起来消费者(kext)与生产者之间的同步(我的守护进程)中断,应该以某种方式将其重置。问题是如何重置队列,以及如何从流程中检测到这种情况。
仅在将进程与lldb调试器连接并按continue
后,队列才能重新工作。
任何想法如何从过程中(以编程方式)处理这种情况。