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

📄 ssp_cmd.c

📁 abstract rtos
💻 C
📖 第 1 页 / 共 4 页
字号:
#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 + -