
详解Linux操作系统设备驱动兼容性
发布时间:2006-10-13 12:22:18 来源:天极博客 网友评论 0 条2.1.23引入了poll系统调用,它是system V中select的对应者(由BSD Unix引入)。不幸的是不可能在select设备方法之上实现poll的功能,所以整个实现用不同的一个代替,它作为select和poll的后端。
在当前版本的核心中,file_operations中的设备方法也叫poll,与系统调用类似,因为其内部模仿这个系统调用。这个方法的原型是:unsigned int (*poll) (struct file *, poll_table *);
驱动程序中设备特定的实现主要完成两个任务:
l 在一个可能在将来唤醒它的等待队列中将当前进程排队。通常,这意味着同时在输入和输出队列中对进程排队。函数poll_wait被用于这个目的,其工作方式与select_wait非常类似(细节请看第五章“增强的字符设备驱动程序操作”中“select”一节)。
2 构造一个位掩码描述设备的状态,并将其返回给调用者。这些位的值是平台特定的,在
如你所看到的,这个代码相当简单。它比对应的select方法要容易。至于select,状态位计为“可读”、“可写”,或“发生例外”(这是select的第三个条件)。poll各位的完全列表在下面给出。“输入”位列在前面,然后是“输出”,一个“例外”位列在最后。
POLLIN如果设备可以被无阻塞地读,那么这个位必须被设置。
POLLRDNORM如果“一般”数据可以被读,这个位必须被设。一个可读设备返回(POLLIN |
POLLRDNORM)。POLLRDBAND在目前的核心源码中这个位不被使用。Unix System V使用这个位报告非0优先级的数据可读。数据优先级的概念与“Streams”包相关。
POLLHUP当一个读设备的进程看到文件结尾时,驱动程序必须设置POLLHUP(挂起)。一个调用select的进程将被告知设备可读,这由select的功能说明。
POLLERR设备上发生了一个错误条件。当poll被select系统调用调用时,设备被报告为既可读又可写,因为read或write将无阻塞地返回一个错误代码。
POLLOUT如果设备可以被无阻塞地写,这个位在返回值中被设置。
POLLWRNORM这个位与POLLOUT有相同的含义,有时甚至的确为同一个数。一个可写的设备返(POLLOUT | POLLWRNORM)。
POLLWRBAND与POLLRDBAND类似,这个位意味着非0优先级的数据可以被写到设备。只有poll的“数据
报”实现用到着位,因为一个数据报可以传送“无团队数据(out-of-band data)”。select报告设备是可写的。
POLLPRI高优先级的数据(“无团队的”)可以被无阻塞地读取。这个位导致select报告文件上发生了一个例外条件,因为select将无团队包作为一个例外条件报告。
poll的主要问题是它与2.0核心所使用的select方法没有任何关系。因此,处理这个不同的最好方法是使用条件编译来编译合适的函数,而且同时将它们都包含在源文件中。如果当前版本支持select而不是poll,那么头文件sysdep-2.1.h定义符号__USE_OLD_SELECT__。这将你从在源码中必须引用LINUX_VERSION_CODE中解脱出来。这两个函数用同样的名字调用,因为在结构sample_fops中sample_poll被引用,那里poll文件操作代替了select方法。
- 微软官方入门教程19:轻松掌握Vista系统的快
- 微软2008大冲击,预借Vista SP1力促Vista市
- 在收件箱中获得 Windows Vista 的最新更新
- 微软官方Vista入门教程全集19篇(Vista学院
- Windows Vista 的成功将势不可挡
- 快快抛弃Vista,拥抱XP SP3!你觉得呢?
- 浅谈Vista系统关闭虚拟内存与使用内存盘加速
- 嘿嘿,按下键盘上面的三个键,马上让你的Vi
- Windows Vista的盗版率只有Windows XP的一半
- 3DMark和PCMark Vantage新版将只支持Vista系
- Windows外衣Linux心 红旗桌面版详测
- 扮酷你的桌面 Linux超靓壁纸下载(多图)
- Linux安装流程
- 浅谈Linux的内核
- RedHat Linux9.0安装实例(1)
- ARM的嵌入式Linux移植体验之基本概念
- Linux安装要点
- 红旗Linux桌面版5.0BETA版OS
- 如何在大硬盘上安装Linux
- RealPlayer流媒体播放器Linux版
- Linux步入Unix的后尘-铁甲Linux出现
- Linux内核中的同步和互斥分析报告
- Linux操作系统文件系统的桌面应用
- Linux设备驱动编程之定时器
- 嵌入式Linux操作系统启动信息完全注释
- 在Linux操作系统中实现内部进程通信
- Linux大腕警告称开源软件存在安全问题
- Linux下双网卡绑定技术实现负载均衡
- 深入浅出Linux操作系统的优化和微调
- Linux下的中文显示和支持常见问题解答
- 大话G游 专题:手机病毒揭密
- ARP攻击防范与解决方案 路由故障处理手册
- Picasa中文版_Picasa教程 专题:清除流氓软件
- Firefox专题 seo搜索引擎优化专区
- 重装Windows必知的事情 装机之必备软件大行动
