Linux-0.11内核源码分析系列:进程调度sleep_on()函数分析

</pre><pre name="code" class="cpp">/*     
 *Author  : DavidLin     
 *Date    : 2014-12-10pm     
 *Email   : linpeng1577@163.com or linpeng1577@gmail.com     
 *world   : the city of SZ, in China     
 *Ver     : 000.000.001     
 *history :     editor      time            do     
 *          1)LinPeng       2014-12-10      created this file!     
 *          2)     
 */  

/* author : linus */
void sleep_on(struct task_struct **p)
{
    struct task_struct *tmp;
    
    if(!p)
        return;
    if(current == &(init_task.task))    //init进程不可睡眠
        panic("task[0] trying to sleep");
    tmp = *p;   //tmp指向上一个当前进程
    *p  = current;    //链表头执行当前进程
    current->state = TASK_UNINTERRUPTIBLE;    //睡眠进程不可中断
    schedule();    //进程调度,以下代码进程被唤醒之后才会继续执行
    if(tmp)  //如果链表next不为空
        tmp->state =
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值