Example #1
0
/**
*
* end VMATRIXR module
*
**/
void vmatrix_r_end(const UINT32 vmatrixr_md_id)
{
    VMATRIXR_MD *vmatrixr_md;

    UINT32 matrixr_md_id;
    UINT32     vmm_md_id;
    MOD_NODE *local_mod_node;

    vmatrixr_md = VMATRIXR_MD_GET(vmatrixr_md_id);
    if(NULL_PTR == vmatrixr_md)
    {
        sys_log(LOGSTDOUT,"error:vmatrix_r_end: vmatrixr_md_id = %ld is overflow.\n", vmatrixr_md_id);
        dbg_exit(MD_VMATRIXR, vmatrixr_md_id);
    }

    /* if the module is occupied by others,then decrease counter only */
    if ( 1 < vmatrixr_md->usedcounter )
    {
        vmatrixr_md->usedcounter --;
        return ;
    }

    if ( 0 == vmatrixr_md->usedcounter )
    {
        sys_log(LOGSTDOUT,"error:vmatrix_r_end: vmatrixr_md_id = %ld is not started.\n", vmatrixr_md_id);
        dbg_exit(MD_VMATRIXR, vmatrixr_md_id);
    }

    //task_brd_mod_mgr_rmv(vmatrixr_md->task_brd, vmatrixr_md->mod_mgr);
    mod_mgr_free(vmatrixr_md->mod_mgr);
    vmatrixr_md->mod_mgr  = NULL_PTR;

    vmatrixr_md->task_brd = NULL_PTR;

    local_mod_node = &(vmatrixr_md->local_mod_node);
    MOD_NODE_TCID(local_mod_node) = CMPI_ERROR_TCID;
    MOD_NODE_COMM(local_mod_node) = CMPI_ERROR_COMM;
    MOD_NODE_RANK(local_mod_node) = CMPI_ERROR_RANK;
    MOD_NODE_MODI(local_mod_node) = CMPI_ERROR_MODI;

    /* if nobody else occupied the module,then free its resource */
    matrixr_md_id = vmatrixr_md->matrixr_md_id;
    vmm_md_id     = vmatrixr_md->vmm_md_id;

    matrix_r_end(matrixr_md_id);
    vmm_end(vmm_md_id);

    vmatrixr_md->matrixr_md_id = ERR_MODULE_ID;
    vmatrixr_md->vmm_md_id     = ERR_MODULE_ID;
    vmatrixr_md->usedcounter   = 0;

    cbc_md_free(MD_VMATRIXR, vmatrixr_md_id);

    breathing_static_mem();
    return ;
}
Example #2
0
File: ccurl.c Project: inevity/ebgn
/**
*
* end CCURL module
*
**/
void ccurl_end(const UINT32 ccurl_md_id)
{
    CCURL_MD *ccurl_md;

    ccurl_md = CCURL_MD_GET(ccurl_md_id);
    if(NULL_PTR == ccurl_md)
    {
        dbg_log(SEC_0030_CCURL, 0)(LOGSTDOUT,"error:ccurl_end: ccurl_md_id = %u not exist.\n", ccurl_md_id);
        dbg_exit(MD_CCURL, ccurl_md_id);
    }
    /* if the module is occupied by others,then decrease counter only */
    if ( 1 < ccurl_md->usedcounter )
    {
        ccurl_md->usedcounter --;
        return ;
    }

    if ( 0 == ccurl_md->usedcounter )
    {
        dbg_log(SEC_0030_CCURL, 0)(LOGSTDOUT,"error:ccurl_end: ccurl_md_id = %u is not started.\n", ccurl_md_id);
        dbg_exit(MD_CCURL, ccurl_md_id);
    }

    /* if nobody else occupied the module,then free its resource */
    if(NULL_PTR != CCURL_MD_MOD_MGR(ccurl_md))
    {
        mod_mgr_free(CCURL_MD_MOD_MGR(ccurl_md));
        CCURL_MD_MOD_MGR(ccurl_md) = NULL_PTR;
    }

    /* free module : */
    //ccurl_free_module_static_mem(ccurl_md_id);

    ccurl_md->usedcounter = 0;

    dbg_log(SEC_0030_CCURL, 5)(LOGSTDOUT, "ccurl_end: stop CCURL module #%u\n", ccurl_md_id);
    cbc_md_free(MD_CCURL, ccurl_md_id);

    return ;
}