中科因仑“3+1”工程特种兵精英论坛

标题: 任务动态载入与结束: [打印本页]

作者: 张衍波    时间: 2015-9-23 16:09
标题: 任务动态载入与结束:
任务动态载入与结束:

在task_switch()里,当发现该进程的task_sp值为0则不再保存该任务的栈指针,这个任务也就消失了.
在搜索下一个可执行任务时,检测task_sp值是否非0.为零则表示该位置无任务.
void task_switch(){

        if(task_sp[task_id] != 0)//如果该任务没被删除,则保存当前栈指针.
                task_sp[task_id] = SP;

        while(1){
                task_id++;//task_id切到下一个.实际上不只是增1这么简单,还要取模.这里只是示范,所以就不写全了.

                if( task_sp[task_id] != 0)//实际上这里还要检查task_sleep的值.但那跟现在所说无关,所以暂时去除掉那部分代码
                        break;
        }
...
}

调用task_switch()前清除自已的task_sp值.
#define task_exit() task_sp[task_id] = 0, task_switch()
附带说下,调用task_delete(tid) 可删除tid指定的进程.转载






欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4