コード例 #1
0
ファイル: EplDllkCal.c プロジェクト: tomyqg/powerlinkstm32
tEplKernel EplDllkCalDelInstance(void)
{
tEplKernel      Ret = kEplSuccessful;
#if EPL_USE_SHAREDBUFF != FALSE
tShbError       ShbError;

/*    ShbError = ShbCirReleaseBuffer (EplDllkCalInstance_g.m_ShbInstanceRx);
    if (ShbError != kShbOk)
    {
        Ret = kEplNoResource;
    }
    EplDllkCalInstance_g.m_ShbInstanceRx = NULL;
*/
    ShbError = ShbCirReleaseBuffer (EplDllkCalInstance_g.m_ShbInstanceTxNmt);
    if (ShbError != kShbOk)
    {
        Ret = kEplNoResource;
    }
    EplDllkCalInstance_g.m_ShbInstanceTxNmt = NULL;

    ShbError = ShbCirReleaseBuffer (EplDllkCalInstance_g.m_ShbInstanceTxGen);
    if (ShbError != kShbOk)
    {
        Ret = kEplNoResource;
    }
    EplDllkCalInstance_g.m_ShbInstanceTxGen = NULL;

#else
    EplDllkCalInstance_g.m_uiFrameSizeNmt = 0;
    EplDllkCalInstance_g.m_uiFrameSizeGen = 0;
#endif

    return Ret;
}
コード例 #2
0
ファイル: EplEventu.c プロジェクト: tomyqg/powerlinkstm32
//---------------------------------------------------------------------------
//
// Function:    EplEventuDelInstance
//
// Description: function delete instance an free the bufferstructure
//
//
//
// Parameters:
//
//
// Returns:      tEpKernel  = errorcode
//
//
// State:
//
//---------------------------------------------------------------------------
tEplKernel PUBLIC EplEventuDelInstance()
{
tEplKernel      Ret;
#if EPL_USE_SHAREDBUFF != FALSE
tShbError       ShbError;
#endif

    Ret = kEplSuccessful;

#if EPL_USE_SHAREDBUFF != FALSE
    // set eventhandler to NULL
    ShbError = ShbCirSetSignalHandlerNewData (EplEventuInstance_g.m_pShbKernelToUserInstance,
                                    NULL,
                                    kShbPriorityNormal);
    if(ShbError != kShbOk)
    {
        //EPL_DBGLVL_EVENTK_TRACE1("EplEventuDelInstance(): ShbCirSetSignalHandlerNewData(K2U) -> 0x%X\n", ShbError);
        Ret = kEplNoResource;
    }

#if EPL_EVENT_USE_KERNEL_QUEUE != FALSE
    // free buffer User -> Kernel
    ShbError = ShbCirReleaseBuffer (EplEventuInstance_g.m_pShbUserToKernelInstance);
    if((ShbError != kShbOk) && (ShbError != kShbMemUsedByOtherProcs))
    {
        //EPL_DBGLVL_EVENTK_TRACE1("EplEventuDelInstance(): ShbCirReleaseBuffer(U2K) -> 0x%X\n", ShbError);
        Ret = kEplNoResource;
    }
    else
    {
        EplEventuInstance_g.m_pShbUserToKernelInstance = NULL;
    }
#endif

    // free buffer  Kernel -> User
    ShbError = ShbCirReleaseBuffer (EplEventuInstance_g.m_pShbKernelToUserInstance);
    if((ShbError != kShbOk) && (ShbError != kShbMemUsedByOtherProcs))
    {
        //EPL_DBGLVL_EVENTK_TRACE1("EplEventuDelInstance(): ShbCirReleaseBuffer(K2U) -> 0x%X\n", ShbError);
        Ret = kEplNoResource;
    }
    else
    {
        EplEventuInstance_g.m_pShbKernelToUserInstance = NULL;
    }

#endif

return Ret;

}
コード例 #3
0
//---------------------------------------------------------------------------
//
// Function:    EplEventuDelInstance
//
// Description: function delete instance an free the bufferstructure
//
//
//
// Parameters:
//
//
// Returns:      tEpKernel  = errorcode
//
//
// State:
//
//---------------------------------------------------------------------------
tEplKernel EplEventuDelInstance(void)
{
    tEplKernel Ret;
#ifndef EPL_NO_FIFO
    tShbError ShbError;
#endif

    Ret = kEplSuccessful;

#ifndef EPL_NO_FIFO
    // set eventhandler to NULL
    ShbError =
        ShbCirSetSignalHandlerNewData(EplEventuInstance_g.
                                      m_pShbKernelToUserInstance, NULL,
                                      kShbPriorityNormal);
    if (ShbError != kShbOk) {
        EPL_DBGLVL_EVENTK_TRACE1
        ("EplEventuDelInstance(): ShbCirSetSignalHandlerNewData(K2U) -> 0x%X\n",
         ShbError);
        Ret = kEplNoResource;
    }
    // free buffer User -> Kernel
    ShbError =
        ShbCirReleaseBuffer(EplEventuInstance_g.m_pShbUserToKernelInstance);
    if ((ShbError != kShbOk) && (ShbError != kShbMemUsedByOtherProcs)) {
        EPL_DBGLVL_EVENTK_TRACE1
        ("EplEventuDelInstance(): ShbCirReleaseBuffer(U2K) -> 0x%X\n",
         ShbError);
        Ret = kEplNoResource;
    } else {
        EplEventuInstance_g.m_pShbUserToKernelInstance = NULL;
    }

    // free buffer  Kernel -> User
    ShbError =
        ShbCirReleaseBuffer(EplEventuInstance_g.m_pShbKernelToUserInstance);
    if ((ShbError != kShbOk) && (ShbError != kShbMemUsedByOtherProcs)) {
        EPL_DBGLVL_EVENTK_TRACE1
        ("EplEventuDelInstance(): ShbCirReleaseBuffer(K2U) -> 0x%X\n",
         ShbError);
        Ret = kEplNoResource;
    } else {
        EplEventuInstance_g.m_pShbKernelToUserInstance = NULL;
    }

#endif

    return Ret;

}
コード例 #4
0
tEplKernel PUBLIC EplApiProcessImageFree(void)
{
    tEplKernel      Ret = kEplSuccessful;
    tShbError       ShbError;
    tEplApiProcessImageCopyJobInt   CopyJob;

    if ((EplApiProcessImageInstance_g.m_In.m_pImage == NULL)
            && (EplApiProcessImageInstance_g.m_Out.m_pImage == NULL))
    {
        goto Exit;
    }

    EplDllkRegSyncHandler(EplApiProcessImageInstance_g.m_pfnOrgCbSync);

    EplApiProcessImageInstance_g.m_In.m_uiSize = 0;
    EplApiProcessImageInstance_g.m_Out.m_uiSize = 0;

    // signal completion to all queued copy jobs
    for (;;)
    {
        Ret = EplApiProcessImageFetchCopyJob(0, &CopyJob);
        if (Ret == kEplSuccessful)
        {
            Ret = EplApiProcessImageSignalCompletion(&CopyJob);
            if (Ret != kEplSuccessful)
            {
                goto Exit;
            }
        }
        else
        {
            break;
        }
    }

    for (;;)
    {
        Ret = EplApiProcessImageFetchCopyJob(1, &CopyJob);
        if (Ret == kEplSuccessful)
        {
            Ret = EplApiProcessImageSignalCompletion(&CopyJob);
            if (Ret != kEplSuccessful)
            {
                goto Exit;
            }
        }
        else
        {
            break;
        }
    }

    if (Ret == kEplApiPIJobQueueEmpty)
    {
        Ret = kEplSuccessful;
    }

    EPL_FREE(EplApiProcessImageInstance_g.m_In.m_pImage);
    EplApiProcessImageInstance_g.m_In.m_pImage = NULL;
    EPL_FREE(EplApiProcessImageInstance_g.m_Out.m_pImage);
    EplApiProcessImageInstance_g.m_Out.m_pImage = NULL;

    ShbError = ShbCirReleaseBuffer (EplApiProcessImageInstance_g.m_ShbInstanceJobQueueLo);
    if (ShbError != kShbOk)
    {
        Ret = kEplNoResource;
    }
    EplApiProcessImageInstance_g.m_ShbInstanceJobQueueLo = NULL;

    ShbError = ShbCirReleaseBuffer (EplApiProcessImageInstance_g.m_ShbInstanceJobQueueHi);
    if (ShbError != kShbOk)
    {
        Ret = kEplNoResource;
    }
    EplApiProcessImageInstance_g.m_ShbInstanceJobQueueHi = NULL;

Exit:
    return Ret;
}