/* * Finalization sequence of system management */ EXPORT ER finish_devmgr( void ) { ER ercd; /* Unregister subsystem */ ercd = tk_def_ssy(DEVICE_SVC, NULL); #ifdef DEBUG if ( ercd < E_OK ) { extension_printf(("1. finish_devmgr -> tk_def_ssy ercd = %d\n", ercd)); } #endif /* Unregister device initial setting information */ ercd = delIDev(); #ifdef DEBUG if ( ercd < E_OK ) { extension_printf(("2. finish_devmgr -> delIDev ercd = %d\n", ercd)); } #endif /* Finalization sequence of device input/output-related */ ercd = finishDevIO(); #ifdef DEBUG if ( ercd < E_OK ) { extension_printf(("3. finish_devmgr -> finishDevIO ercd = %d\n", ercd)); } #endif /* Delete device registration information table */ if ( DevCBtbl != NULL ) { Ifree(DevCBtbl); DevCBtbl = NULL; } /* Delete semaphore for device management synchronous control */ if ( DevMgrSync > 0 ) { tk_del_sem(DevMgrSync); DevMgrSync = 0; } /* Delete lock for device management exclusive control */ DeleteMLock(&DevMgrLock); return ercd; }
EXPORT void _delete_liblock( void ) { DeleteMLock(&LibLock); }