📄 ssp_cmd.c
字号:
#ifdef __cplusplusextern "C"{#endif#include "syscfg.h"#include "sys/sys_pub.h"#include "aos.h"#include "ssp_cmd.h"#include "ssp_tmr.h"#include "ssp_event.h"#include "ssp_task.h"#include "ssp_msg.h"#include "ssp_sem.h"#include "ssp_que.h"#include "ssp_smem.h"#include "ssp_slab.h"#include "ssp_cputick.h"#include "ssp_spy.h"#include "ssp_except.h"#include "ssp_cputick.h"#include "cli/cli_pub.h"#if( CONFIG_OS_WINDOWS == TRUE )#define FILE_SLASH '\\' #else#define FILE_SLASH '/' #endifS8 g_FileNameInAddr[16];S8 *ssp_cmd_get_short_file_name( S8 *file );U32 g_ulShowFreeMem = 0;#if( AOS_INCLUDE_SSP_KER_SHOW == TRUE )VOID aos_cmd_show_timer(U32 argc,S8 * argv[]) { U32 ulDisplay; U32 i; U32 ulUserIndex; U32 ulCurrentLine; U32 ulTimerCount,ulStatisfiedCount; U32 ulTimerDisplay; S32 lRet; S8 szBuffer[80]; U32 ulDispMpe = U32_BUTT, ulDispName = U32_BUTT; ulDisplay = AOS_SUCC; ulCurrentLine = 0; ulTimerCount = 0; ulStatisfiedCount = 0; ulTimerDisplay= 0; lRet = aos_atol(argv[0], (S32 *)&ulUserIndex); if(lRet != AOS_SUCC) { cli_out_string(0,"\r\nshow timer:get userindex error!!!\r\n"); return; } if( (argc > 2) && ( 4 != argc && 6 != argc ) ) { cli_out_string(ulUserIndex,"\r\nSyntax:\r\nshow timer {mpe [all|mpeval]} {name [all|nameval]} \r\n"); return; } if( argc >= 4 ) { if( 0 != aos_strcmp( argv[2], "mpe" ) ) { cli_out_string(ulUserIndex,"\r\nSyntax:\r\nshow timer {mpe [all|mpeval]} {name [all|nameval]} \r\n"); return; } if( 0 == aos_strcmp( argv[3], "all" ) ) { ulDispMpe = U32_BUTT; } else if( 0 != aos_atoul( argv[3], &ulDispMpe ) ) { cli_out_string(ulUserIndex,"\r\nmpe incorrect!!! \r\n"); return; } } if( argc >= 6 ) { if( 0 != aos_strcmp( argv[4], "name" ) ) { cli_out_string(ulUserIndex,"\r\nSyntax:\r\nshow timer {mpe [all|mpeval]} {name [all|nameval]} \r\n"); return; } if( 0 == aos_strcmp( argv[5], "all" ) ) { ulDispName = U32_BUTT; } else if( 0 != aos_atoul( argv[5], &ulDispName ) ) { cli_out_string(ulUserIndex,"\r\nname incorrect!!! \r\n"); return; } } cli_out_string(ulUserIndex, "\r\nStatus MPE PassTick InitTick Name(0x) Para(0x) Mode(0x) CallBack MsgOut \r\n"); for(i = 0;i < CONFIG_TIMER_NUMBER;i++) { if( TIMER_IS_NULL == g_pstTimer[i].status ) { continue; } ulTimerCount++; if( (U32_BUTT == ulDispMpe || ulDispMpe == g_pstTimer[i].mpe) &&(U32_BUTT == ulDispName || ulDispName == g_pstTimer[i].name) ) { ulStatisfiedCount++; if(ulDisplay == AOS_SUCC) { switch(g_pstTimer[i].status) { case TIMER_IS_MSGOUT: lRet = aos_sprintf(szBuffer,"OUT "); break; case TIMER_IS_DELETED: lRet = aos_sprintf(szBuffer,"DEL "); break; case TIMER_IS_WAITING: lRet = aos_sprintf(szBuffer,"WAIT "); break; default: continue; } ulTimerDisplay++; aos_sprintf(szBuffer+lRet,"%-4d %-8d %-8d %-8x %-8x %-8x %-8x %-8d\r\n", g_pstTimer[i].mpe, g_pstTimer[i].ticks, g_pstTimer[i].init_ticks, g_pstTimer[i].name, g_pstTimer[i].para, g_pstTimer[i].mode, g_pstTimer[i].callback, g_pstTimer[i].msg_out); lRet = (S32)cli_out_string_wait(ulUserIndex,szBuffer,&ulCurrentLine); if(lRet == CLI_DISPLAY_STOP) { ulDisplay = AOS_FAIL; } } } } aos_sprintf(szBuffer,"\r\ntotal num:%u,statisfied num:%u,display num:%u",ulTimerCount,ulStatisfiedCount,ulTimerDisplay); cli_out_string(ulUserIndex,szBuffer); }VOID aos_cmd_show_task(U32 argc,S8 * argv[]){ U32 ulDisplay; U32 i; U32 ulUserIndex; U32 ulCurrentLine; U32 ulTaskCount; U32 ulTaskDisplay; U32 ulPerCur; U32 ulPer5s; U32 ulPer60s; U32 ulPer600s; S32 lRet; S8 szBuffer[80]; S8 szName[AOS_NAME_LEN+4]; S8 szStatus[AOS_NAME_LEN*2+1]; U32 t_sec,t_usec; U32 ulTaskStackRate; ulDisplay = AOS_SUCC; ulCurrentLine = 0; ulTaskCount = 0; ulTaskDisplay = 0; lRet = aos_atol(argv[0], (S32 *)&ulUserIndex); if(lRet != AOS_SUCC) { cli_out_string(0,"\r\nshow task:get userindex error!!!\r\n"); return; } if(argc > 3) { cli_out_string(0,"\r\nshow task:too many parameter!!!\r\n"); return; } if(argc == 2) { cli_out_string(ulUserIndex, "\r\nID Name Status Stack StackRate Mode Entry(0x) Prio SysID(0x)"#if(CONFIG_OS_VXWORKS == TRUE ) " cpu(ms)\r\n"#endif ); } else { if(aos_strnicmp(argv[2],"perf",4) != 0) { cli_out_string(ulUserIndex,"\r\ncommand syntax error,format:show task [performance]\r\n"); return; } cli_out_string(ulUserIndex, "\r\nID Name Cur(%%) 5s(%%) 60s(%%) 600s(%%) \r\n"); } for(i = 1;i < CONFIG_TASK_NUMBER;i++) { if(g_pstTask[i].status == TASK_STATUS_NULL) { continue; } ulTaskCount++; if(ulDisplay == AOS_SUCC) { ulTaskDisplay++;#ifdef CONFIG_USE_MSG_LOCK#if CONFIG_USE_MSG_LOCK if( i == g_LastHandleTaskId ) { szName[0] = '*'; aos_task_name(i,&szName[1]); } else#endif#endif { aos_task_name(i,szName); } if(argc == 2) { aos_task_status(i,szStatus); aos_cputick_2us(&g_pstTask[i].cputicktotal,&t_sec,&t_usec);#if(CONFIG_OS_VXWORKS == TRUE ) if( g_pstTask[i].stack_size ) { ulTaskStackRate = ((aos_task_stackactsize(i)*100)/g_pstTask[i].stack_size); } else { ulTaskStackRate = 0; }#else ulTaskStackRate = 0;#endif aos_sprintf(szBuffer,"%-3d %-9s %-16s %-8d %-9d %-4d %-9x %-4d %-9x %u\r\n", i,szName,szStatus, g_pstTask[i].stack_size, ulTaskStackRate, g_pstTask[i].task_mode, g_pstTask[i].entry, g_pstTask[i].task_prio, g_pstTask[i].sys_task_id#if(CONFIG_OS_VXWORKS == TRUE ) ,t_sec * 1000 + t_usec/1000#endif ); } else { aos_task_performance_get(i,&ulPerCur,&ulPer5s,&ulPer60s,&ulPer600s); aos_sprintf(szBuffer,"%-3d %-8s %-8d %-8d %-8d %-8d\r\n", i,szName,ulPerCur,ulPer5s,ulPer60s,ulPer600s); } lRet = (S32)cli_out_string_wait(ulUserIndex,szBuffer,&ulCurrentLine); if(lRet == CLI_DISPLAY_STOP) { ulDisplay = AOS_FAIL; } } } aos_sprintf(szBuffer,"\r\ntotal num:%d,display num:%d",ulTaskCount,ulTaskDisplay); cli_out_string(ulUserIndex,szBuffer); }VOID aos_cmd_show_mps(U32 argc,S8 * argv[]){ U32 ulDisplay; U32 i; U32 ulUserIndex; U32 ulCurrentLine; U32 ulMpsCount; U32 ulMpsDisplay; S32 lRet; S8 szBuffer[80]; S8 szName[AOS_NAME_LEN+1]; ulDisplay = AOS_SUCC; ulCurrentLine = 0; ulMpsCount = 0; ulMpsDisplay = 0; lRet = aos_atol(argv[0], (S32 *)&ulUserIndex); if(lRet != AOS_SUCC) { cli_out_string(0,"\r\nshow mps:get userindex error!!!\r\n"); return; } if(argc > 2) { cli_out_string(0,"\r\nshow mps:too many parameter!!!\r\n"); return; } cli_out_string(ulUserIndex, "\r\nID Name TaskId Normal High \r\n"); for(i = 0;i < MPS_BUTT;i++) { if(g_pstMpset[i].status == FALSE) { continue; } ulMpsCount++; if(ulDisplay == AOS_SUCC) { ulMpsDisplay++; aos_task_name(g_pstMpset[i].task_id,szName); aos_sprintf(szBuffer,"%-3d %-8s %-6d %-10d %-10d\r\n", i,szName, g_pstMpset[i].task_id, g_pstMpset[i].msg_que[MSG_PRIO_NORMAL].qlen, g_pstMpset[i].msg_que[MSG_PRIO_HIGH].qlen); lRet = (S32)cli_out_string_wait(ulUserIndex,szBuffer,&ulCurrentLine); if(lRet == CLI_DISPLAY_STOP) { ulDisplay = AOS_FAIL; } } } aos_sprintf(szBuffer,"\r\ntotal num:%d,display num:%d",ulMpsCount,ulMpsDisplay); cli_out_string(ulUserIndex,szBuffer);}VOID aos_cmd_show_mpe(U32 argc,S8 * argv[]){ U32 ulDisplay; U32 i; U32 ulUserIndex; U32 ulCurrentLine; U32 ulMpeCount; U32 ulMpeDisplay; S32 lRet; S8 szBuffer[80]; S8 szMpsName[AOS_NAME_LEN+1]; S8 szMpeName[AOS_NAME_LEN+1]; ulDisplay = AOS_SUCC; ulCurrentLine = 0; ulMpeCount = 0; ulMpeDisplay = 0; lRet = aos_atol(argv[0], (S32 *)&ulUserIndex); if(lRet != AOS_SUCC) { cli_out_string(0,"\r\nshow mpe:get userindex error!!!\r\n"); return; } if(argc > 2) { cli_out_string(0,"\r\nshow mpe:too many parameter!!!\r\n"); return; } cli_out_string(ulUserIndex, "\r\nID MpeName MpsName print init(0x) run(0x) flag cnt\r\n"); for(i = 0;i < MPE_BUTT;i++) { if(g_pstMpe[i].status == FALSE) { continue; } ulMpeCount++; if(ulDisplay == AOS_SUCC) { ulMpeDisplay++; aos_mpe_name(i,szMpeName); aos_mps_name(g_pstMpe[i].mps,szMpsName); aos_sprintf(szBuffer,"%-3d %-8s %-8s %-5d %-8x %-8x %-8s %u\r\n", i, szMpeName, szMpsName, g_pstMpe[i].print_flag, g_pstMpe[i].init, g_pstMpe[i].run, g_pstMpe[i].msg_handling ? "TRUE" : "FALSE", g_pstMpe[i].message_cnt ); lRet = (S32)cli_out_string_wait(ulUserIndex,szBuffer,&ulCurrentLine); if(lRet == CLI_DISPLAY_STOP) { ulDisplay = AOS_FAIL; } } } aos_sprintf(szBuffer,"\r\ntotal num:%d,display num:%d",ulMpeCount,ulMpeDisplay); cli_out_string(ulUserIndex,szBuffer);}VOID aos_cmd_show_sem(U32 argc,S8 * argv[]){ U32 ulDisplay; U32 i,j; U32 ulUserIndex; U32 ulCurrentLine; U32 ulSemCount; U32 ulSemDisplay; S32 lRet; S8 szBuffer[80]; S8 szName[AOS_NAME_LEN+1]; ulDisplay = AOS_SUCC; ulCurrentLine = 0; ulSemCount = 0; ulSemDisplay = 0; lRet = aos_atol(argv[0], (S32 *)&ulUserIndex); if(lRet != AOS_SUCC) { cli_out_string(0,"\r\nshow sem:get userindex error!!!\r\n"); return; } if(argc > 2) { cli_out_string(0,"\r\nshow sem:too many parameter!!!\r\n"); return; } cli_out_string(ulUserIndex, "\r\nID Name flag value SysID(0x)\r\n"); for(i = 0;i < CONFIG_SEM_NUM;i++) { if(g_pstSem[i].status == SEM_CB_FREE) { continue; } ulSemCount++; if(ulDisplay == AOS_SUCC) { ulSemDisplay++; for(j = 0;j < AOS_NAME_LEN;j++) { szName[j] = (S8)(g_pstSem[i].name[j]); } szName[j] = '\0';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -