Невозможно выгрузить расширение ядра; У классов есть экземпляры

пишу расширение ядра OSX для драйвера аудиоустройствас программным обеспечением, но эмулирует аппаратное устройство).

Во время разработкиБыло бы удобно полностью удалить существующие старые версии, а затем собрать и установить новую версию с нуля. Однако иногда это кажется невозможным без перезагрузки системы.

Сама программа не запущена, а исходные файлы были удалены из/System/Library/Extensions/ реж.

Ноkextstat раскрывает один случай:

$ kextstat | grep 'com.foo.driver.bar'
219 0 0xfff123 0x5000 0x5000 com.foo.driver.bar (0.0.1) 

(...имея в виду:)

Index Refs Address Size Wired Name (Version) 

Так что в моем экземпляре драйвера есть 0 ссылок, ноkextunload иногда терпит неудачу, жалуясь на существующие случаи:

$ sudo kextunload -b com.foo.driver.bar
(kernel) Can't unload kext com.foo.driver.bar; classes have instances:
(kernel)     Kext com.foo.driver.bar class FooBarDriver has 1 instance.
(kernel)     Kext com.foo.driver.bar class com_foo_driver_bar has 1 instance.
Failed to unload com.foo.driver.bar - (libkern/kext) kext is in use or retained (cannot unload).

Когда это произойдет, тамнет никакого способа "сила» выгрузить kext (что я знаю).

Правильно ли я догадываюсь, что этот единственный экземпляр все еще существует из-за ссылки, хранящейся в памяти работающего ядра ОС? Это некажется правильным, потому что тогдаkextunload всегда будет терпеть неудачу. Так почему жеkextunload только иногда требуется перезагрузка системыот корки до корки" выгрузить все экземпляры драйверов?

Ответы на вопрос(1)

Ваш ответ на вопрос