我的学习之旅(41)sched.c

49 篇文章 0 订阅
49 篇文章 0 订阅

//每个任务堆栈的初始化,其中cs必须是0x08, ss则是0x10 eflags是0x206

unsigned int *task_stk_init(void (*task)(), unsigned int *task_stk )
{
    unsigned int *stk;
    int i;
    int j;
    stk = task_stk;

    *stk-- = 0x10; /*ss*/
    *stk-- = (unsigned int)task_stk;   /*esp*/
    *stk-- = 0x206;  /*eflags enable sw interrupt*/   
    *stk-- = 0x08; /*cs*/
    *stk-- = (unsigned int)task; /*eip*/
   
    *stk-- = 0x10; /*ds*/
    *stk-- = 0x10; /*es*/
    *stk-- = 0x10; /*fs*/
    *stk-- = 0x10; /*gs*/
    *stk-- = 0x1111; /*ebp*/
    *stk-- = 0x2222; /*edi*/
    *stk-- = 0x3333; /*esi*/
    *stk-- = 0xdddd; /*edx*/
    *stk-- = 0xcccc; /*ecx*/
    *stk-- = 0xbbbb; /*ebx*/   
    *stk = 0xaaaa;/*eax*/

    return stk;
}

建立3个task:rx_task, main_task和task2,当前这3个task都只暂时做打印。具体功能等任务调度功能调试OK后再细化实现。

void rx_task(void)

{

    for(;;)

        printk("rx_task()\n");

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值