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

📄 cmd.c

📁 介绍ROCK OS操作系统.一般用于汽车电子,类似OCVX.里面是个DEMO文档,内附说明.
💻 C
📖 第 1 页 / 共 2 页
字号:
        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 + -