📄 cmd.c
字号:
queue = str2int(argv[1]);
}
if (queue == NULL_QUEUE)
{
q_showAll();
}
else if (queue < MAX_QUEUE_NUM)
{
q_showSingle(queue);
}
else
{
OS_printf("Qid [%d] out of range, max value is [%d]!!!\n", queue, MAX_QUEUE_NUM-1);
}
return 0;
}
/******************************************************************************
Function :
Params : argc - the argument count (including command name).
: argv - the arguments (argv[0] is the command name)
:
:
Return :
Description :
:
******************************************************************************/
int msgQShow(int argc, char * argv[])
{
return 0;
}
/******************************************************************************
Function :
Params : argc - the argument count (including command name).
: argv - the arguments (argv[0] is the command name)
:
:
Return :
Description :
:
******************************************************************************/
int spy(int argc, char * argv[])
{
OS_printf("spy - 实时显示CPU占用率\n");
OS_printf(" show the cpu real time load rate.\n");
OS_printf(" * 此功能在教学版本中不提供.\n");
OS_printf(" * This feature is not provide in Edu version.\n");
return 0;
}
/******************************************************************************
Function : int taskShow(int argc, char * argv[])
Params : argc - the argument count (including command name).
: argv - the arguments (argv[0] is the command name)
:
:
Return : always 0
Description : show all task'd adapt information, or specified tasks' detail
: information.
******************************************************************************/
int taskShow(int argc, char * argv[])
{
U32 i;
HTASK task;
if (argc <= 1)
{
/* show all task's adapt information. */
OS_printf("Id Name Prio Status Delay\n");
OS_printf("===== ================ ===== ======== ==========\n");
for (task = 0; task < MAX_SYS_TASK; task++)
{
if (g_sysTcb[task].state == OS_TASK_FREE)
{
continue;
}
/* task id. */
OS_printf("%-5d ", task);
/* task name. */
if (strlen(&g_sysTcb[task].name[0]) < 16)
{
OS_printf("%-16s ", &g_sysTcb[task].name[0]);
}
else
{
for (i = 0; i < 16; i++)
{
OS_putchar(g_sysTcb[task].name[i]);
}
}
/* task priority. */
OS_printf("%-5d ", g_sysTcb[task].priority);
/* task state. */
switch (g_sysTcb[task].state)
{
case OS_TASK_READY:
case OS_TASK_RUNNING:
OS_printf ("%-8s ", "Ready");
/* delay ticks. */
OS_printf("%-10d\n", 0);
break;
case OS_TASK_PEND_ON_SEMA:
case OS_TASK_PEND_ON_MSGQ_R:
case OS_TASK_PEND_ON_MSGQ_S:
if (g_sysTcb[task].delayTicks != OS_WAIT_FOR_EVER)
{
OS_printf("%-8s ", "Pend+T");
/* delay ticks. */
OS_printf("%-10d\n", g_sysTcb[task].delayTicks);
}
else
{
OS_printf("%-8s ", "Pend");
/* delay ticks. */
OS_printf("%-10d\n", 0);
}
break;
case OS_TASK_DELAY:
OS_printf("%-8s ", "Delay");
/* delay ticks. */
OS_printf("%-10d\n", g_sysTcb[task].delayTicks);
break;
case OS_TASK_SUSPEND:
OS_printf("%-8s ", "Suspend");
/* delay ticks. */
OS_printf("%-10d\n", 0);
break;
case OS_TASK_FAULT:
OS_printf("%-8s ", "Fault");
/* delay ticks. */
OS_printf("%-10d\n", 0);
break;
default:
break;
}
}
OS_printf("====================================================\n");
}
else
{
/* show specified task's detail information. */
}
return 0;
}
/******************************************************************************
Function : int ts(int argc, char * argv[])
Params : argc - the argument count (including command name).
: argv - the arguments (argv[0] is the command name)
:
:
Return :
Description : suspend a task, a task in suspend or fault state will discard
: this command. Usage:
: ->ts taskId
******************************************************************************/
int ts(int argc, char * argv[])
{
HTASK task;
if (argc <= 1)
{
OS_printf("Command:\n");
OS_printf(" To suspend a specified task.\n");
OS_printf("Usage:\n");
OS_printf(" ->ts taskId\n");
return 0;
}
task = str2int(argv[1]);
if (task < MAX_SYS_TASK)
{
if ((task == g_tickTaskId)||(task == g_idleTaskId)||(task == g_shellTaskId))
{
OS_printf("Task [%d:%s] can't be suspened.\n", task, g_sysTcb[task].name);
}
else if (g_sysTcb[task].state == OS_TASK_FREE)
{
OS_printf("Task [%d] is free.\n");
}
else if (g_sysTcb[task].state == OS_TASK_SUSPEND)
{
OS_printf("Task [%d] has been suspended.\n");
}
else if (g_sysTcb[task].state == OS_TASK_FAULT)
{
OS_printf("Task [%d] has fault, can't be suspend.\n");
}
else
{
taskSuspend(task);
}
}
else
{
OS_printf("Task [%d] out of range, max [%d]\n");
}
return 0;
}
/******************************************************************************
Function : int tw(int argc, char * argv[])
Params : argc - the argument count (including command name).
: argv - the arguments (argv[0] is the command name)
:
:
Return :
Description : wakeup a suspend task, usage:
: ->tw taskId
******************************************************************************/
int tw(int argc, char * argv[])
{
HTASK task;
if (argc <= 1)
{
OS_printf("Command:\n");
OS_printf(" To wakeup a suspend task.\n");
OS_printf("Usage:\n");
OS_printf(" ->tw taskId\n");
return 0;
}
task = str2int(argv[1]);
if (task < MAX_SYS_TASK)
{
if (g_sysTcb[task].state == OS_TASK_SUSPEND)
{
taskWakeup(task);
}
else
{
OS_printf("Task [%d] is not in suspend state, discard.\n");
}
}
else
{
OS_printf("Task [%d] out of range, max [%d]\n");
}
return 0;
}
/******************************************************************************
Function : int tr(int argc, char * argv[])
Params : argc - the argument count (including command name).
: argv - the arguments (argv[0] is the command name)
:
:
Return :
Description : restart a task, usage:
: ->tr taskId
******************************************************************************/
int tr(int argc, char * argv[])
{
HTASK task;
if (argc <= 1)
{
OS_printf("Command:\n");
OS_printf(" To restart a specified task.\n");
OS_printf("Usage:\n");
OS_printf(" ->tr taskId\n");
return 0;
}
task = str2int(argv[1]);
if (task < MAX_SYS_TASK)
{
if (g_sysTcb[task].state != OS_TASK_FREE)
{
taskRestart(task);
}
else
{
OS_printf("Task [%d] is free.\n");
}
}
else
{
OS_printf("Task [%d] out of range, max [%d]\n");
}
return 0;
}
/******************************************************************************
Function : int td(int argc, char * argv[]);
Params : argc - the argument count (including command name).
: argv - the arguments (argv[0] is the command name)
:
:
Return :
Description : delete a task, usage:
: ->td taskId
******************************************************************************/
int td(int argc, char * argv[])
{
HTASK task;
if (argc <= 1)
{
OS_printf("Command:\n");
OS_printf(" To delete a specified task.\n");
OS_printf("Usage:\n");
OS_printf(" ->td taskId\n");
return 0;
}
task = str2int(argv[1]);
if (task < MAX_SYS_TASK)
{
if ((task == g_tickTaskId)||(task == g_idleTaskId)||(task == g_shellTaskId))
{
OS_printf("Task [%d:%s] is permanent and can't be deleted.\n", task, g_sysTcb[task].name);
}
else if (g_sysTcb[task].state != OS_TASK_FREE)
{
taskDelete(task);
}
else
{
OS_printf("Task [%d] is free.\n");
}
}
else
{
OS_printf("Task [%d] out of range, max [%d]\n");
}
return 0;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -