Oracle® Solaris 11.2 デバイスドライバの記述

印刷ビューの終了

更新: 2014 年 9 月
 
 

_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() が成功を返すまで、ドライバリソースを解放しません。