以下示例给出了 _fini() 例程。
int _fini(void) { int error; error = mod_remove(&modlinkage); if (error != 0) { return (error); } /* * Cleanup resources allocated in _init() */ ddi_soft_state_fini(&xxstatep); return (0); }
同样,在 _fini() 中,驱动程序应该释放在 _init() 中分配的所有资源。驱动程序必须将其自身从系统模块列表中删除。
将驱动程序连接至硬件实例时,可能会调用 _fini()。在本示例中,mod_remove(9F) 返回失败信息。因此,在 mod_remove() 返回成功信息之前,不应释放驱动程序资源。