第六章 高级字符驱动程序操作(linux驱动学习笔记)

主题:
简介:
参考:
时间:
作者:

ioctl
驱动程序需要具备的能力:
(1)读取和写入设备
(2)执行硬件控制
ioctl详解

选择ioctl命令

返回值:
-ENVAL

预定义命令
大多数ioctl系统调用用于操作设备,部分命令可以由内核识别。
预定义命令的分组
(1)可用于任何文件(普通、设备、FIFO、socket)的命令;
(2)只用于普通文件的命令
(3)特定于文件系统类型的命令

使用ioctl参数

权能与受限操作
驱动程序通常不进行权限检查,对设备的访问由设备文件的权限控制。

阻塞性IO
阻塞型IO和非阻塞IO

休眠的简单介绍:
(1)不要在原子上下文中进入休眠
(2)被唤醒时,不知道休眠的时间
信号与信号量
简单休眠:
可中断休眠wait_event_interruptible(queue,condition)
等待限定时间中断休眠wait_event_interruptible_timeout(queue,condition,timeout)
唤醒可中断休眠wake_up_interruptible(wait_queue_head_t *queue)
阻塞和非阻塞操作:
如果一个进程调用了read,但是没数据可读,此进程必须阻塞,数据到达时进程被唤醒,并把数据返回给调用者。

如果一个进程调用了write,但缓冲区没有空间,此进程必须阻塞,而且必须休眠在与读取进程不同的等待队列上。

系统调用:系统调用提供了用户程序和操作系统之间的接口,应用程序通过系统调用实现其与OS的通信,并可取得它的服务。

只有read、write、open操作受非阻塞标志的影响。
阻塞和非阻塞、同步和异步
阻塞和非阻塞指的是调用者(程序)在等待返回结果(或输入)的状态。阻塞时,当前线程会被挂起,并在得到结果之后返回。非阻塞时,如果不能立即得到结果,则该调用者不会阻塞当前线程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值