⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ssp_cmd.c

📁 abstract rtos
💻 C
📖 第 1 页 / 共 4 页
字号:
    }VOID aos_cmd_show_dmem_details(U32 ulUserIndex, U32 ulMemSize, U32 ulMpeID,                                U32 ulSID, U32 ulTickNum, U32 ulMemCheck ){    U32 i,j;    U32 ulLineCount = 0;    U32 ulRet;    S8* pTitle = "\r\nAddr(0x) Size       Mpe  Sid(0x)  Tick       Ref Line  File\r\n";    S8  pCurrLine[120];     U32 ulCurrTick;    U32 ulTotalNum      = 0;    U32 ulDisplayNum    = 0;    U32 ulDisplay       = AOS_SUCC;    SLAB_S *s_Tmp;    S8     *pFile;        cli_out_string(ulUserIndex,pTitle);    ulCurrTick = aos_tick_get();    if( 0 == ulMemSize )    {                  for(i = 0;i < CONFIG_MEM_BUF_NUM;i++)        {            if(g_pstMemBuf[i].status == FALSE)            {                continue;            }                for( s_Tmp = g_pstMemBuf[i].s_list_head; s_Tmp != NULL; s_Tmp = s_Tmp->s_next )            {                for(j = 0; j < g_pstMemBuf[i].objnum; j++)                {                    if( 0 == s_Tmp->obj_ctrl[j].ref )                    {                        continue;                    }                    if( ulMemCheck                       && RED_MAGIC1 == *(U32*)(s_Tmp->s_mem + j * g_pstMemBuf[i].objsize)                      && RED_MAGIC1 == *(U32*)(s_Tmp->s_mem + (j+1) * g_pstMemBuf[i].objsize - 4 ) )                    {                        continue;                    }                                                            if( U32_BUTT!= ulMpeID )                    {                        if(ulMpeID != s_Tmp->obj_ctrl[j].mpe)                        {                            continue;                        }                    }                                        if( U32_BUTT != ulSID)                    {                        if( ulSID != s_Tmp->obj_ctrl[j].sid )                        {                            continue;                        }                    }                                        if( 0 != ulTickNum )                    {                        if( s_Tmp->obj_ctrl[j].tick + ulTickNum > ulCurrTick )                        {                            continue;                        }                    }                    ulTotalNum++;                    if(ulDisplay == AOS_SUCC)                    {                        ulDisplayNum++;                        aos_sprintf(pCurrLine,"%-8x %-10d %-4d %-8x %-10d %-3d %-5d %-s \r\n",                                    s_Tmp->s_mem + j*g_pstMemBuf[i].objsize + 4,                                    g_pstMemBuf[i].objsize-8,                                    s_Tmp->obj_ctrl[j].mpe,                                    s_Tmp->obj_ctrl[j].sid,                                    ulCurrTick - s_Tmp->obj_ctrl[j].tick,                                    s_Tmp->obj_ctrl[j].ref,                                    s_Tmp->obj_ctrl[j].line,                                    ssp_cmd_get_short_file_name(s_Tmp->obj_ctrl[j].file)                                    );                        ulRet = cli_out_string_wait(ulUserIndex,pCurrLine, &ulLineCount);                        if( CLI_DISPLAY_STOP == ulRet )                        {                            ulDisplay = AOS_FAIL;                        }                        ulCurrTick = aos_tick_get();                    }                }            }        }        aos_sprintf(pCurrLine,"\r\ntotal num:%d,display num:%d",ulTotalNum,ulDisplayNum);        cli_out_string(ulUserIndex,pCurrLine);            }    else    {        for(i = 0;i < CONFIG_MEM_BUF_NUM;i++)        {            if(g_pstMemBuf[i].status == FALSE)            {                continue;            }                    if( ulMemSize == (g_pstMemBuf[i].objsize - 8) )            {                for( s_Tmp = g_pstMemBuf[i].s_list_head; s_Tmp != NULL; s_Tmp = s_Tmp->s_next )                {                    for(j = 0; j < g_pstMemBuf[i].objnum; j++)                    {                        if( ( !g_ulShowFreeMem && 0 == s_Tmp->obj_ctrl[j].ref )                          ||( g_ulShowFreeMem && 0 != s_Tmp->obj_ctrl[j].ref ) )                        {                            continue;                        }                                                                        if( U32_BUTT != ulMpeID )                        {                            if(ulMpeID != s_Tmp->obj_ctrl[j].mpe)                            {                                continue;                            }                        }                                                                if( U32_BUTT != ulSID)                        {                            if( ulSID != s_Tmp->obj_ctrl[j].sid )                            {                                continue;                            }                        }                                                                if( 0 != ulTickNum )                        {                            if( s_Tmp->obj_ctrl[j].tick + ulTickNum > ulCurrTick )                            {                                continue;                            }                        }                                                ulTotalNum++;                                                    if(ulDisplay == AOS_SUCC)                        {                            ulDisplayNum++;                            pFile = ssp_cmd_get_short_file_name(s_Tmp->obj_ctrl[j].file);                            if( NULL == pFile )                            {                                pFile = "No-used";                            }                            aos_sprintf(pCurrLine,"%-8x %-10d %-4d %-8x %-10d %-3d %-5d %-s \r\n",                                            s_Tmp->s_mem + j*g_pstMemBuf[i].objsize + 4,                                            g_pstMemBuf[i].objsize-8,                                            s_Tmp->obj_ctrl[j].mpe,                                            s_Tmp->obj_ctrl[j].sid,                                            ulCurrTick - s_Tmp->obj_ctrl[j].tick,                                            s_Tmp->obj_ctrl[j].ref,                                            s_Tmp->obj_ctrl[j].line,											pFile                                                                                    );                            ulRet = cli_out_string_wait(ulUserIndex,pCurrLine, &ulLineCount);                            if( CLI_DISPLAY_STOP == ulRet )                            {                                ulDisplay = AOS_FAIL;                            }                            ulCurrTick = aos_tick_get();                        }                    }                }            }        }        aos_sprintf(pCurrLine,"\r\ntotal num:%d,display num:%d",ulTotalNum,ulDisplayNum);        cli_out_string(ulUserIndex,pCurrLine);            }        return;}VOID aos_cmd_show_statistic(U32 argc,S8 *argv[]){    S8* pAllTitle = "\r\nSize       Total    Used     Free     Byte       Waste\r\n";    S8* pMpeTitle = "\r\nSize       Total    Used     Mpe  Byte\r\n";    S8 * pMpeAllTitle = "\r\nMpeName         Mpe      TotalUsed\r\n";    U32 ulUserIndex;     S32 lRet;     S8  pCurrLine[80];     U32 ulTotal    = 0, ulAllTotal = 0;    U32 ulUsed     = 0, ulWaste = 0;    U32 ulFree     = 0;    U32 ulSize;    U32 ulMpe;    U32 i,j;    SLAB_S *s_Tmp;    S8 *szCmdHelp = {        "\r\nCommand format:\r\n"        "  show memory statistic\r\n"        "  show memory statistic [size memsize] [mpe mpeid] [all mpe]\r\n"        "  show memory statistic {size memsize} {mpe mpeid}\r\n"        };    S8 szName[AOS_NAME_LEN+4];    lRet = aos_atoul(argv[0], &ulUserIndex);    if( AOS_SUCC != lRet)    {        cli_out_string(0, "\r\nGet user index error\r\n");        return;    }        if(argc == 3 && 0 == aos_strcmp(argv[2],"?") )    {        cli_out_string(ulUserIndex,szCmdHelp);        return;    }    if(( argc != 2 ) && (argc != 4) && ( argc != 6 ))    {        cli_out_string(ulUserIndex,"\r\nCommad expression error\r\n");        cli_out_string(ulUserIndex,szCmdHelp);        return;    }    if( 2 == argc )    {                cli_out_string(ulUserIndex, pAllTitle);                for(i = 0;i < CONFIG_MEM_BUF_NUM;i++)        {            if(g_pstMemBuf[i].status == FALSE)            {                continue;            }                    ulTotal = 0;            ulFree  = 0;            if( 0 == g_pstMemBuf[i].page_num || 0 == g_pstMemBuf[i].objsize )            {                ulWaste = 0;            }            else            {                ulWaste = ( g_pstMemBuf[i].page_num << MEM_PAGE_ORDER ) % g_pstMemBuf[i].objsize;                ulWaste = ( ulWaste*100 )/( g_pstMemBuf[i].page_num << MEM_PAGE_ORDER );            }                    for( s_Tmp = g_pstMemBuf[i].s_list_head; s_Tmp != NULL; s_Tmp = s_Tmp->s_next )            {                ulTotal += g_pstMemBuf[i].objnum;                ulFree  += g_pstMemBuf[i].objnum- s_Tmp->inuse ;                                    }            ulUsed += (g_pstMemBuf[i].objsize - 8) * (ulTotal - ulFree);                        aos_sprintf(pCurrLine,"%-10d %-8d %-8d %-8d %-10d %-10d\r\n",                        g_pstMemBuf[i].objsize - 8,                        ulTotal,                        ulTotal - ulFree,                        ulFree,                        (g_pstMemBuf[i].objsize - 8) * (ulTotal - ulFree),                        ulWaste );            cli_out_string(ulUserIndex,pCurrLine);        }        aos_sprintf(pCurrLine,"Total memory size:0x%x,Used:0x%x\r\n",            g_ulStaticMemStart - (U32)g_pPageOffset - CONFIG_AOS_RESERVED_MEM_SIZE,ulUsed);                cli_out_string(ulUserIndex,pCurrLine);        return;    }        if( 4 == argc )    {                if( 0 == aos_strnicmp(argv[2], "size", aos_strlen(argv[2])))        {                                        lRet = aos_atoul(argv[3], &ulSize);            if( AOS_SUCC != lRet )            {                cli_out_string(ulUserIndex, "\r\nMemory size parameter error\r\n");                return;            }                                    for(i = 0;i < CONFIG_MEM_BUF_NUM;i++)            {                if(g_pstMemBuf[i].status == FALSE)                {                    continue;                }                            if( ulSize == (g_pstMemBuf[i].objsize - 8 ))                {                    break;                }            }            if( i >= CONFIG_MEM_BUF_NUM )            {                cli_out_string(ulUserIndex, "\r\nWrong memory size\r\n");                return;            }                        for( s_Tmp = g_pstMemBuf[i].s_list_head; s_Tmp != NULL; s_Tmp = s_Tmp->s_next )            {                ulTotal += g_pstMemBuf[i].objnum;                ulFree  += g_pstMemBuf[i].objnum - s_Tmp->inuse ;            }                        cli_out_string(ulUserIndex, pAllTitle);            aos_sprintf(pCurrLine,"%-10d %-8d %-8d %-8d %-10d\r\n",                        g_pstMemBuf[i].objsize - 8,                        ulTotal,                        ulTotal - ulFree,                        ulFree,                        (g_pstMemBuf[i].objsize - 8) * (ulTotal - ulFree));            cli_out_string(ulUserIndex,pCurrLine);                     return;        }        else if(0 == aos_strnicmp(argv[2], "mpe", aos_strlen(argv[2])) )        {                        lRet = aos_atoul(argv[3], &ulMpe);            if( AOS_SUCC != lRet )            {                cli_out_string(ulUserIndex, "\r\nMpe id parameter error\r\n");                return;            }                        cli_out_string(ulUserIndex, pMpeTitle);            for(i = 0;i < CONFIG_MEM_BUF_NUM;i++)            {                if(g_pstMemBuf[i].status == FALSE)                {                    continue;                }                ulUsed = 0;                ulTotal = 0;                                for( s_Tmp = g_pstMemBuf[i].s_list_head; s_Tmp != NULL; s_Tmp = s_Tmp->s_next )                {                    for(j = 0; j < g_pstMemBuf[i].objnum; j++)                    {                        if(( 0 != s_Tmp->obj_ctrl[j].ref )&&                           ( ulMpe == s_Tmp->obj_ctrl[j].mpe))                        {                            ulUsed += 1;                         }                    }                    ulTotal += g_pstMemBuf[i].objnum;                }                                aos_sprintf(pCurrLine, "%-10d %-8d %-8d %-4d %-10d\r\n",                            g_pstMemBuf[i].objsize - 8,                            ulTotal,ulUsed,ulMpe,                            (g_pstMemBuf[i].objsize - 8) * ulUsed);                cli_out_string(ulUserIndex,pCurrLine);            }                        return;        }        else if(0 == aos_strnicmp(argv[2], "all", aos_strlen(argv[2])) )        {                                    cli_out_string(ulUserIndex, pMpeAllTitle);            for(ulMpe = 0; ulMpe < MPE_BUTT; ulMpe++)            {                if(g_pstMpe[ulMpe].status == FALSE)                {                    continue;                }                                ulTotal = 0;                for(i = 0;i < CONFIG_MEM_BUF_NUM;i++)                {                    if(g_pstMemBuf[i].status == FALSE)                    {                        continue;                    }                    ulUsed = 0;                                        for( s_Tmp = g_pstMemBuf[i].s_list_head; s_Tmp != NULL; s_Tmp = s_Tmp->s_next )                    {                        for(j = 0; j < g_pstMemBuf[i].objnum; j++)                        {                            if(( 0 != s_Tmp->obj_ctrl[j].ref )&&                               ( ulMpe == s_Tmp->obj_ctrl[j].mpe))                            {                                ulUsed += 1;                             }                        }                    }                                        ulTotal += (g_pstMemBuf[i].objsize - 8) * ulUsed;                                    }                if( AOS_SUCC != aos_mpe_name(ulMpe,szName) )                {                    aos_sprintf( szName,"%s","nulmpe");                }                                aos_sprintf(pCurrLine, "%-16s%-9d%-16d\r\n",                            szName,ulMpe,ulTotal);                cli_out_string(ulUserIndex,pCurrLine);                ulAllTotal += ulTotal;                            }            aos_sprintf(pCurrLine, "All Mpe Used Memeory:  %-16d\r\n", ulAllTotal);            cli_out_string(ulUserIndex,pCurrLine);            return;        }        else        {            cli_out_string(ulUserIndex, "\r\nCommand expression error\r\n");            return;        }    }        if( 6 == argc )    {                if(( 0 != aos_strnicmp(argv[2], "size", aos_strlen(argv[2])))||           ( 0 != aos_strnicmp(argv[4], "mpe", aos_strlen(argv[4]))))        {            cli_out_string(ulUserIndex, "\r\nCommand expression error\r\n");            return;        }                lRet = aos_atoul(argv[3], &ulSize);        if( AOS_SUCC != lRet )        {            cli_out_string(ulUserIndex, "\r\nMemory size parameter error\r\n");            return;        }                lRet = aos_atoul(argv[5], &ulMpe);        if( AOS_SUCC != lRet )        {            cli_out_string(ulUserIndex, "\r\nMpe ID parameter error\r\n");            return;        }                 for(i = 0;i < CONFIG_MEM_BUF_NUM;i++)        {            if(g_pstMemBuf[i].status == FALSE)            {                continue;            }                     if( ulSize == (g_pstMemBuf[i].objsize - 8))            {                break;            }        }        if( i >= CONFIG_MEM_BUF_NUM )        {            cli_out_string(ulUserIndex, "\r\nWrong memory size\r\n");            return;        }                for( s_Tmp = g_pstMemBuf[i].s_list_head; s_Tmp != NULL; s_Tmp = s_Tmp->s_next )        {            for(j = 0; j < g_pstMemBuf[i].objnum ; j++)            {                    if(( 0 != s_Tmp->obj_ctrl[j].ref )&&( ulMpe == s_Tmp->obj_ctrl[j].mpe ))                    {                        ulUsed += 1;                     }            }            ulTotal += g_pstMemBuf[i].objnum;        }                cli_out_string(ulUserIndex, pMpeTitle);        aos_sprintf(pCurrLine, "%-10d %-8d %-8d %-4d %-10d\r\n",                    g_pstMemBuf[i].objsize - 8,                    ulTotal,ulUsed,ulMpe,                    (g_pstMemBuf[i].objsize - 8) * ulUsed);        cli_out_string(ulUserIndex,pCurrLine);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -