_fini() 示例
以下示例显示了 _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() 返回成功信息之前,不应释放驱动程序资源。