/**************************************************************************** Name : eda_destroy Description : This routine destroys the EDA control block. Arguments : destroy_info - ptr to the destroy info Return Values : None Notes : None ******************************************************************************/ void eda_destroy(NCS_LIB_DESTROY *destroy_info) { EDA_CB *cb = 0; TRACE_ENTER(); /* retrieve EDA CB */ cb = (EDA_CB *)ncshm_take_hdl(NCS_SERVICE_ID_EDA, gl_eda_hdl); if (!cb) { TRACE_LEAVE2("global take handle failed: %u", gl_eda_hdl); return; } /* delete the hdl db */ eda_hdl_list_del(&cb->eda_init_rec_list); /* unregister with MDS */ eda_mds_finalize(cb); /* destroy the lock */ m_NCS_LOCK_DESTROY(&cb->cb_lock); /* return EDA CB */ ncshm_give_hdl(gl_eda_hdl); /* remove the association with hdl-mngr */ ncshm_destroy_hdl(NCS_SERVICE_ID_EDA, cb->cb_hdl); /* free the control block */ m_MMGR_FREE_EDA_CB(cb); /* reset the global cb handle */ gl_eda_hdl = 0; TRACE_LEAVE(); return; }
/**************************************************************************** Name : eda_destroy Description : This routine destroys the EDA control block. Arguments : destroy_info - ptr to the destroy info Return Values : None Notes : None ******************************************************************************/ void eda_destroy(NCS_LIB_DESTROY *destroy_info) { EDA_CB *cb = 0; /* retrieve EDA CB */ cb = (EDA_CB *)ncshm_take_hdl(NCS_SERVICE_ID_EDA, gl_eda_hdl); if (!cb) { m_LOG_EDSV_A(EDA_CB_HDL_TAKE_FAILED, NCSFL_LC_EDSV_INIT, NCSFL_SEV_ERROR, 0, __FILE__, __LINE__, 0); return; } /* delete the hdl db */ eda_hdl_list_del(&cb->eda_init_rec_list); /* unregister with MDS */ eda_mds_finalize(cb); /* destroy the lock */ m_NCS_LOCK_DESTROY(&cb->cb_lock); /* de register with the flex log */ eda_flx_log_dereg(); /* return EDA CB */ ncshm_give_hdl(gl_eda_hdl); /* remove the association with hdl-mngr */ ncshm_destroy_hdl(NCS_SERVICE_ID_EDA, cb->cb_hdl); /* free the control block */ m_MMGR_FREE_EDA_CB(cb); /* reset the global cb handle */ gl_eda_hdl = 0; return; }