![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux-driver
jiangshitian
这个作者很懒,什么都没留下…
展开
-
linux驱动程序中的并发控制
现代操作系统有三大特性:中断处理、多任务处理和多处理器。这些特性导致当多个进程、线程或者CPU同时访问一个资源时,可能发生错误,这些错误是操作系统运行所不允许的。在操作系统中,内核需要提供并发控制机制,对共享资源进行保护。 在操作系统中,并发是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。并发容易转载 2013-10-11 11:00:12 · 245 阅读 · 0 评论 -
linux设备驱动程序中的阻塞机制
阻塞与非阻塞是设备访问的两种方式。在写阻塞与非阻塞的驱动程序时,经常用到等待队列。 一、阻塞与非阻塞 阻塞调用是指调用结果返回之前,当前线程会被挂起,函数只有在得到结果之后才会返回。 非阻塞指不能立刻得到结果之前,该函数不会阻塞当前进程,而会立刻返回。 对象是否处于阻塞模式和函数是不是阻塞调用有很强的相关性,但并不是一一对应的。阻塞对象上可以有非阻塞的调用方式,我们可以通过转载 2013-10-11 11:01:58 · 319 阅读 · 1 评论 -
Linux设备驱动之mmap设备操作
1.mmap系统调用 void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset); 功能:负责把文件内容映射到进程的虚拟地址空间,通过对这段内存的读取和修改来实现对文件的读取和修改,而不需要再调用read和write; 参数:addr:映射的起始地址,设为NULL由系统指定; len转载 2013-10-11 10:54:14 · 282 阅读 · 0 评论 -
linux设备驱动程序之简单字符设备驱动
一、linux系统将设备分为3类:字符设备、块设备、网络设备。使用驱动程序: 1、字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据。字符设备是面向流的设备,常见的字符设备有鼠标、键盘、串口、控制台和LED设备等。 2、块设备:是指可以从设备的任意位置读取一定长度数据的设备。块设备包括硬盘、磁盘、U盘和SD卡等。 每一转载 2013-10-11 10:58:05 · 684 阅读 · 0 评论 -
Linux高级字符设备之Poll操作
在用户程序中,select()和poll()也是与设备阻塞与非阻塞访问息息相关的,使用非阻塞I/O的应用程序通常会使用select和poll系统调用查询是否可对设备进行无阻塞的访问。select系统调用最终会引发设备驱动中的poll函数被执行。 一、select()系统调用: 用于多路监控,当没有一个文件满足要求时,select将阻塞调用进程。 1.select()原型: in转载 2013-10-11 11:05:11 · 278 阅读 · 0 评论 -
Linux设备驱动之Ioctl控制
大部分驱动除了需要具备读写设备的能力之外,还需要具备对硬件控制的能力。 一、在用户空间,使用ioctl系统调用来控制设备,原型如下: int ioctl(int fd,unsigned long cmd,...); /* fd:文件描述符 cmd:控制命令 ...:可选参数:插入*argp,具体内容依赖于cmd */ 用户程序所作的只是通过命令码告诉驱动程序它想做什么,转载 2013-10-11 11:07:30 · 259 阅读 · 0 评论 -
kernel与用户层接口之字符设备接口
kernel与用户层接口之字符设备接口: 两种方法: 1. register_chrdev方法 2. platform_driver方法 platform_driver方法原理: platform_driver和platform_device的name名字名字必须匹配才能实现device和driver的绑定? (1)在内转载 2013-10-11 11:15:35 · 302 阅读 · 0 评论