📄 ssp_cmd.c
字号:
}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 + -