static ClRcT clMsgDebugCliQueueInfo(ClUint32T argc,
                                    ClCharT **argv,
                                    ClCharT **ret)
{
    ClRcT rc = CL_OK;
    ClDebugPrintHandleT dbgHdl = 0;

    clDebugPrintInitialize(&dbgHdl);
    
    CL_OSAL_MUTEX_LOCK(&gClLocalQsLock);
    rc = clHandleWalk(gClMsgQDatabase, clMsgQueueInfoCb, (ClPtrT)dbgHdl);
    if (rc != CL_OK)
    {
        clLogError("MSG", "CLI", "Handle walk failed, error [%#x]", rc);
        CL_OSAL_MUTEX_UNLOCK(&gClLocalQsLock);
        goto out;
    }
    CL_OSAL_MUTEX_UNLOCK(&gClLocalQsLock);

    clDebugPrintFinalize(&dbgHdl, ret);
    
    return CL_OK;
out:    
    return rc;
}
void
clLogStreamOwnerDataDump(ClCharT **retval)
{
    ClRcT                  rc              = CL_OK;
    ClDebugPrintHandleT    msg             = 0;
    ClLogSOEoDataT         *pSoEoEntry     = NULL;
    ClLogSvrCommonEoDataT  *pCommonEoEntry = NULL;

    CL_LOG_DEBUG_TRACE(("Enter"));
    
    clDebugPrintInitialize(&msg);

    rc = clLogStreamOwnerEoEntryGet(&pSoEoEntry, &pCommonEoEntry);
    if( CL_OK != rc )
    {
        return ;
    }    
    rc = clLogSOLock(pSoEoEntry, CL_LOG_STREAM_GLOBAL);
    if( CL_OK != rc )
    {
        return ;
    }
    clLogStreamOwnerEoDataPrint(pSoEoEntry, &msg);

    if( CL_HANDLE_INVALID_VALUE != pSoEoEntry->hGStreamOwnerTable )
    {
        rc = clCntWalk(pSoEoEntry->hGStreamOwnerTable, clLogSOTableWalkForPrint, 
                &msg, 0);
        if( CL_OK != rc )
        {
            CL_LOG_DEBUG_ERROR(("clCntWalk(): rc[0x %x]", rc));
            CL_LOG_CLEANUP(clLogSOUnlock(pSoEoEntry, CL_LOG_STREAM_GLOBAL), CL_OK);
            return ;
        }
    }
    CL_LOG_CLEANUP(clLogSOUnlock(pSoEoEntry, CL_LOG_STREAM_GLOBAL), CL_OK);

    rc = clLogSOLock(pSoEoEntry, CL_LOG_STREAM_LOCAL);
    if( CL_OK != rc )
    {
        return ;
    }
    if( CL_HANDLE_INVALID_VALUE != pSoEoEntry->hLStreamOwnerTable )
    {
        rc = clCntWalk(pSoEoEntry->hLStreamOwnerTable, clLogSOTableWalkForPrint, 
                &msg, 0);
        if( CL_OK != rc )
        {
            CL_LOG_DEBUG_ERROR(("clCntWalk(): rc[0x %x]", rc));
            CL_LOG_CLEANUP(clLogSOUnlock(pSoEoEntry, CL_LOG_STREAM_LOCAL), CL_OK);
            return ;
        }
    }
    CL_LOG_CLEANUP(clLogSOUnlock(pSoEoEntry, CL_LOG_STREAM_LOCAL), CL_OK);

    clDebugPrintFinalize(&msg, retval);

    CL_LOG_DEBUG_TRACE(("Exit"));
    return ;
}
/* Server Eo Data Dump */
ClRcT
clLogSvrEoDataDump(ClCharT  **ret)
{
    ClRcT                rc           = CL_OK;
    ClDebugPrintHandleT  msg          = 0;
    ClLogSvrEoDataT      *pSvrEoEntry = NULL;

	CL_LOG_DEBUG_TRACE(("Enter"));

    clDebugPrintInitialize(&msg);
    
    rc = clLogSvrEoEntryGet(&pSvrEoEntry, NULL);
    if( CL_OK != rc )
    {
        CL_LOG_DEBUG_ERROR(("clLogSvrEoEntryGet(): rc[0x%x]", rc));
        return rc;
    }
    
    clDebugPrint(msg, "\nServer EO data \n");

    clDebugPrint(msg, "Cpm Handle: %llu\n", pSvrEoEntry->hCpm);

    clDebugPrint(msg, "Log Component id: %ud\n", pSvrEoEntry->logCompId);

    clDebugPrint(msg, "Handle to Server Stream table: %p\n",
                  pSvrEoEntry->hSvrStreamTable);

#ifndef __KERNEL__
    clDebugPrint(msg, "Table Lock id: %p\n", (void *) &pSvrEoEntry->svrStreamTableLock);
#else
    clDebugPrint(msg, "Table Lock id: %ud\n", &pSvrEoEntry->svrStreamTableLock);
#endif

    clDebugPrint(msg, "Next valid Dataset id: %ud\n", pSvrEoEntry->nextDsId);
    clDebugPrint(msg, "Bitmap Handle: %p\n", (void *) pSvrEoEntry->hDsIdMap);
    clDebugPrint(msg, "Water mark for flushing - limit: %u\n", pSvrEoEntry->maxFlushLimit);

    clDebugPrintFinalize(&msg, ret);
    
    CL_LOG_DEBUG_TRACE(("Exit"));
    return CL_OK;
}