Lenix多任务演示

#include <stdio.h>
#include <lenix.h>

#define USER_APP_STACK              512

byte_t                      app_stack1[USER_APP_STACK];
byte_t                      app_stack2[USER_APP_STACK];
byte_t                      app_stack3[USER_APP_STACK];
byte_t                      app_stack4[USER_APP_STACK];
byte_t                      app_stack5[USER_APP_STACK];
byte_t                      app_stack6[USER_APP_STACK];
byte_t                      app_stack7[USER_APP_STACK];

void        app1(void * param)
{
    char    msg[80];

    *(int *)param = (int)param; /*  避免编译器发出变量未使用警告,下同  */


    for(;;)
    {
        Con_write_string(0,5," name          pid  pr  pn  run time  use  test");
        Con_write_string(0,6," ------------  ---  --  --  --------  ---  --------");
        sprintf(msg,"system run time: %8ld",Clk_get_ticks());
        Con_write_string(0,24,msg);
        Proc_delay(1000);
    }
}

void        app2(void * param)
{
    long i = 0;
    char    msg[80];
    char    name[12];
    *(int *)param = (int)param;
    Proc_delay(50);
    for(;;)
    {
        Cpu_disable_interrupt();
        sprintf(msg," %-12s  %3d  %2d  %2d  %8ld  %2d%%  %8ld",Proc_get_name(name),
            Proc_get_pid(),Proc_get_priority(),Proc_get_prio_num(),
            Proc_get_run_time(),(int)(100*Proc_get_run_time()/Clk_get_ticks()),i++);
        Cpu_enable_interrupt();
        Con_write_string(0,7,msg);
    }
}

void        app3(void * param)
{
    long i = 0;
    char    msg[80];
    char    name[12];
    *(int *)param = (int)param;
    Proc_delay(50);
    for(;;)
    {
        Cpu_disable_interrupt();
        sprintf(msg," %-12s  %3d  %2d  %2d  %8ld  %2d%%  %8ld",Proc_get_name(name),
            Proc_get_pid(),Proc_get_priority(),Proc_get_prio_num(),
            Proc_get_run_time(),(int)(100*Proc_get_run_time()/Clk_get_ticks()),i++);
        Cpu_enable_interrupt();
        Con_write_string(0,8,msg);
    }
}
void        app4(void * param)
{
    long i = 0;
    char    msg[80];
    char    name[12];
    *(int *)param = (int)param;
    Proc_delay(50);
    for(;;)
    {
        Cpu_disable_interrupt();
        sprintf(msg," %-12s  %3d  %2d  %2d  %8ld  %2d%%  %8ld",Proc_get_name(name),
            Proc_get_pid(),Proc_get_priority(),Proc_get_prio_num(),
            Proc_get_run_time(),(int)(100*Proc_get_run_time()/Clk_get_ticks()),i++);
        Cpu_enable_interrupt();
        Con_write_string(0,9,msg);
    }
}
void        app5(void * param)
{
    long i = 0;
    char    msg[80];
    char    name[12];
    *(int *)param = (int)param;
    Proc_delay(50);
    for(;;)
    {
        Cpu_disable_interrupt();
        sprintf(msg," %-12s  %3d  %2d  %2d  %8ld  %2d%%  %8ld",Proc_get_name(name),
            Proc_get_pid(),Proc_get_priority(),Proc_get_prio_num(),
            Proc_get_run_time(),(int)(100*Proc_get_run_time()/Clk_get_ticks()),i++);
        Cpu_enable_interrupt();
        Con_write_string(0,10,msg);
    }
}

void        app6(void * param)
{
    long i = 0;
    char    msg[80];
    char    name[12];
    *(int *)param = (int)param;
    Proc_delay(50);
    for(;;)
    {
        Cpu_disable_interrupt();
        sprintf(msg," %-12s  %3d  %2d  %2d  %8ld  %2d%%  %8ld",Proc_get_name(name),
            Proc_get_pid(),Proc_get_priority(),Proc_get_prio_num(),
            Proc_get_run_time(),(int)(100*Proc_get_run_time()/Clk_get_ticks()),i++);
        Cpu_enable_interrupt();
        Con_write_string(0,11,msg);
    }
}
void        app7(void * param)
{
    long i = 0;
    char    msg[80];
    char    name[12];
    *(int *)param = (int)param;
    Proc_delay(50);
    for(;;)
    {
        Cpu_disable_interrupt();
        sprintf(msg," %-12s  %3d  %2d  %2d  %8ld  %2d%%  %8ld",Proc_get_name(name),
            Proc_get_pid(),Proc_get_priority(),Proc_get_prio_num(),
            Proc_get_run_time(),(int)(100*Proc_get_run_time()/Clk_get_ticks()),i++);
        Cpu_enable_interrupt();
        Con_write_string(0,12,msg);
    }
}

void        User_initial(void)
{
    Proc_create("app1",60,5,app1,0,
        MAKE_STACK(app_stack1,USER_APP_STACK),
        STACK_SIZE(app_stack1,USER_APP_STACK));
    Proc_create("app2",60,1,app2,0,
        MAKE_STACK(app_stack2,USER_APP_STACK),
        STACK_SIZE(app_stack2,USER_APP_STACK));
    Proc_create("app3",60,2,app3,0,
        MAKE_STACK(app_stack3,USER_APP_STACK),
        STACK_SIZE(app_stack3,USER_APP_STACK));
    Proc_create("app4",60,3,app4,0,
        MAKE_STACK(app_stack4,USER_APP_STACK),
        STACK_SIZE(app_stack5,USER_APP_STACK));
    Proc_create("app5",60,4,app5,0,
        MAKE_STACK(app_stack5,USER_APP_STACK),
        STACK_SIZE(app_stack5,USER_APP_STACK));
    Proc_create("app6",60,5,app6,0,
        MAKE_STACK(app_stack6,USER_APP_STACK),
        STACK_SIZE(app_stack6,USER_APP_STACK));
    Proc_create("app7",60,5,app7,0,
        MAKE_STACK(app_stack7,USER_APP_STACK),
        STACK_SIZE(app_stack7,USER_APP_STACK));
}


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值