Linux设备驱动程序第三版学习(6)- 高级字符驱动程序操作(续1) - 进程休眠

第六章:高级字符驱动程序操作(续1)
以下是第2部分:掌握如何使进程休眠(并唤醒)
分为4个小的部分(都是通过分析源码的形式,必要时加以总结):
1、进程休眠的细节
2、进程唤醒的细节
3、scullpipe中read的实现
4、scullpipe中write的实现

1、 进程休眠的细节
    Linux内核中最简单的休眠方式就是称为wait_event的宏(以及它的几个变种),形式如下:


    进程调用上面某一个宏进入休眠,最常用的是wait_event_interruptible,这个宏的具体细节如下:
    

    看一看__wait_event_interruptible这个宏

总之,调用了wait_event或其变种,则进程进入休眠。

2. 进程唤醒的细节
    与休眠细节相似,唤醒是通过调用wake_up宏来实现的,最常用的变种是wake_up_interruptible。这个宏的具体细节如下:

 
    ================分析wait_queue_func_t的源码================
    在wait.h中可以看到:
      
    其中default_wake_function定义在sched.c中, 如下
 
    看看try_to_wake_up函数,这是唤醒进程的核心函数:
    
3、scullpipe中read的实现(简单休眠方法)

4、scullpipe中write的实现(高级休眠方法)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值