基于Linux内核的驱动开发

 1 阻塞操作
        定义:是指在执行设备操作时,若不能获得资源,则挂起进程直到满足可操作的
                条件后再进行操作。
        驱动如何实现阻塞操作?可以定义一个休眠等待队列,如果设备没有数据可读,就
                                    将请求读数据的进程放到休眠等待队列中休眠,直到设备准备
                                    好数据后,再唤醒休眠进程去读数据。
        wait_queue_head_t   q;-->休眠等待队列头
        init_waitqueue_head(&q);-->初始化休眠等待队列

        使用:  read-->helloRead
            helloRead()
               wait_event_interruptible(q,con)-->使当前读进程休眠--》休眠期可被中断
               wait_event(q,con)--》使当前读进程休眠--》休眠期不可被中断
                q:修吗等待队列头
                con:休眠唤醒条件  1:结束休眠   0:继续休眠
            helloWrite()
                con=1;
                wake_up_interruptible(&q)-->唤醒进程(唤醒可被中断的休眠进程)
                wake_up(&q)-->唤醒进程(唤醒不可被中断的休眠进程)

    注意:当进程正常运行时,进程在运行队列中等待被运行
            当进程休眠时,进程在休眠等待对列中等待被唤醒运行                           
    2 非阻塞操作
        定义:是指在不能进行设备操作时,并不挂起或休眠该进程,而是给进程一个非
                正确的值,底层设备驱动通过不停的查询查看操作是否可进行,直到操作
                可进行后给请求进程一个正确的结果。
                ÿ

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值