文章 2017-11-14 来自:开发者社区

深入浅出Linux设备驱动编程--设备驱动中的异步通知

6.设备驱动中的异步通知 结合阻塞与非阻塞访问、poll函数可以较好地解决设备的读写,但是如果有了异步通知就更方便了。异步通知的意思是:一旦设备就绪,则主动通知应用程序,这样应用程序根本就不需要查询设备状态,这一点非常类似于硬件上“中断”地概念,比较准确的称谓是“信号驱动(SIGIO)的异步I/O”。 我们先来看一个使用信号驱动的例子,它通过signal(SIGIO, input_handler....

文章 2017-11-14 来自:开发者社区

深入浅出Linux设备驱动编程--内存与I/O操作

对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。 进程的4GB内存空间被人为的分为两个部分——用户空间与内核空间。用户空间地址分布从0到3GB(PAGE_OFFSET,在0x86中它等于0xC0000000),3GB到4GB为内核空间,如下图:   内核空间中,从3G到...

文章 2017-11-09 来自:开发者社区

深入浅出Linux设备驱动编程--复杂设备驱动

这里所说的复杂设备驱动涉及到PCI、USB、网络设备、块设备等(严格意义而言,这些设备在概念上并不并列,例如与块设备并列的是字符设备,而PCI、USB设备等都可能属于字符设备),这些设备的驱动中又涉及到一些与特定设备类型相关的较为复杂的数据结构和程序结构。本文将不对这些设备驱动的细节进行过多的介绍,仅仅进行轻描淡写的叙述。 PCI 是The Peripheral Component Interc....

文章 2017-11-08 来自:开发者社区

深入浅出Linux设备驱动编程--引言

深入浅出Linux设备驱动编程--引言 宋宝华 [email]21cnbao@21cn.com[/email] yesky 1.引言 《ARM的嵌入式Linux移植体验》发表以来,笔者收到许多读者来信,他们对嵌入式Linux开发表现出了浓厚的兴趣。我们摘取其中的两封:    你好,不知道怎么称呼你。就叫你技术大侠吧。   &nb...

文章 2017-11-08 来自:开发者社区

深入浅出Linux设备驱动编程--定时器

定时器 Linux内核中定义了一个timer_list结构,我们在驱动程序中可以利用之: struct timer_list {        struct list_head list;        unsigned long expires; //定时器到期时间 ...

文章 2017-11-01 来自:开发者社区

深入浅出Linux设备驱动编程--设备的阻塞与非阻塞操作

宋宝华 [email]21cnbao@21cn.com[/email] yesky 5.设备的阻塞与非阻塞操作 阻塞操作是指,在执行设备操作时,若不能获得资源,则进程挂起直到满足可操作的条件再进行操作。非阻塞操作的进程在不能进行设备操作时,并不挂起。被挂起的进程进入sleep状态,被从调度器的运行队列移走,直到等待的条件被满足。 在Linux驱动程序中,我们可以使用等待队列(w...

文章 2016-09-29 来自:开发者社区

Linux设备驱动编程---miscdevice杂类设备的使用方法

miscdev简称杂类设备杂类设备就是对字符设备驱动做一个封装,方便简单使用杂类设备封装字符设备需要包含的头文件:#include <linux/miscdevice.h>(1)杂类设备的数据结构:struct miscdevice { int minor; //次设备号 const char *name; //设备名称 const struct file_oper...

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

产品推荐

Linux宝库