注册通行证 用户名 密码
  • 文章投稿
  • 博客
  • 论坛
  • 设为首页
  • 加入收藏
jztop.com网络技术
  • 首页
  • | iT新闻
  • | 操作系统
  • | 组网建网
  • | 网络安全
  • | 程序开发
  • | 办公一族
  • | 工具软件
  • | 网页制作
  • | 多媒体制作
  • | 网吧技术
  • | 服务器
  • | 专题教程
Vista | 软件评测 | 系统备份 | 优化 | 进程 | 聊天 | 病毒 | Linux | 黑客 | 防火墙 | 数据库 | Web开发 | Java | Word | 游戏 | 32位开发 | 移动开发
当前位置:首页 > 操作系统 > Linux > 内容正文

详解Linux操作系统设备驱动兼容性

发布时间:2006-10-13 12:22:18 来源:天极博客 网友评论 0 条
  中断管理

  在2.1的开发中,有些Linux内部被修改了。新核心提供了对内部锁的很好的管理;通过使用几个细粒度的锁,而不是全局的锁,竞争条件被避免了,这样也获得了更好的性能----特别是SMP配置下。更细的锁机制的一个结果是intr_count不再存在了。2.1.34抛弃了这个全局变量,而布尔函数in_interrupt可以取而代之(这个函数从2.1.30开始存在)。目前,in_interrupt是在头文件中声明的宏,这个头文件又包含在中。头文件sysdep-2.1.h用intr_count的名义定义了in_interrupt以获得对2.0的向后兼容性。

  注意虽然in_interrupt是个整数,intr_count却是个unsigned long,因此,如果你想打印这个值,并在2.0和2.1间可移植,你必须强制将这个值转换为一个显式的类型,并在调用printk时指定一个合适的格式。在2.1.37中中断管理又引入了一个不同:快和慢中断处理程序不再存在了。SA_INTERRUPT不被新版本的request_irq使用,但它在处理程序执行以前仍然控制着中断是否被打开。如果几个处理程序共享一个中断线,每个可以是个不同的“类型”。中断打开与否依赖于第一个被调用的处理程序。当中断处理程序存在时,下半部总是执行。

  位操作

  2.1.37稍微改变了在中定义的位操作的作用。现在函数set_bit及其相关者返回void,而新的类似test_and_set_bit的函数已被引入。新的函数集有如下原型:

void set_bit(int nr, volatile void * addr)
; void clear_bit(int nr, volatile void * addr)
; void change_bit(int nr, volatile void * addr)
int test_and_set_bit(int nr, volatile void * addr)
; int test_and_clear_bit(int nr, volatile void * addr)
; int test_and_change_bit(int nr, volatile void * addr)
; int test_bit(nr, addr);

  如果你想获得与2.0的后向兼容性,你可以在你的模块中包含sysdep-2.1.h,并使用新的原型。

  转换函数

  版本2.1.10引入了一个新的转换函数,在中声明。这些函数可以用来访问多字节值,只要这个值已知是小印地安字节序或大印地安字节序。因为这些函数为写驱动程序代码提供了很好的快捷方式,头文件sysdep-2.1.h在较早的版本就已经定义了它们。2.1核心源码提供的本身实现比sysdep-2.1.h提供的可移植的实现要快,因为它可以利用体系相关的功能。

  新函数对应下面的原型,其中le表示小印地安字节序,be表示大印地安字节序。注意编译器并不强制严格的数据类型化,因为大多数函数都是预处理宏;下面给出的类型仅供参考。

__u16 cpu_to_le16(__u16 cpu_val)
; __u32 cpu_to_le32(__u32 cpu_val)
; __u16 cpu_to_be16(__u16 cpu_val)
; __u32 cpu_to_be32(__u32 cpu_val)
; __u16 le16_to_cpu(__u16 le_val)
; __u32 le32_to_cpu(__u32 le_val)
; __u16 be16_to_cpu(__u16 be_val)
; __u32 be32_to_cpu(__u32 be_val);

  这些函数在处理二进制数据流时很有用(例如文件系统数据或存在接口板中的信息),这些函数在处理二进制数据流时很有用(例如文件系统数据或存在接口板中的信息),版本2.1.43又增加了两个新的转换函数集。这些集允许你用指针获取一个值,或是对参数指定的一个值进行就地转换。对应与16位小印地安字节序的函数又如下的原型;类似的函数对其它类型的整数也存在,导致一共16个函数。

__u16 cpu_to_le16p(__u16 *addr)
__u16 le16_to_cpup(__u16 *addr) void cpu_to_le16s(__u16 *addr) void le16_to_cpus(__u16 *addr)

  “p”函数类似与指针的复引用,但在需要时转换这个值;“s”函数可以在原地转换一个值的印地安字节序(例如,cpu_to_le16s(addr) 和addr=cpu_to_le16(*addr)完成的工作是一样的)。

  这些函数也在sysdep-2.1.h中定义了。为了避免双重解释的副作用,这个头文件用线入函数,而不是预处理宏。

vremap<b></b> vremap

  “把握内存”中“vmalloc和朋友们”一节描述的vremap函数在版本2.1中得到一个新名字。新函数ioremap只是名字变了,它与旧的remap取同样的参数。响应的释放函数是iounmap,它代替vfree来释放被重映射的地址。这个改变是为了明确这个函数的实际作用:将I/O空间重映射到核心空间的一个虚地址。头文件sysdep-2.1.h强化了这种新规则,当在2.0版本编译时,它#define了ioremap和iounmap到它们2.0的对应者。

上一页 1 2 3 4 5 6 下一页
关于 Linux 操作系统 Linux兼容性 的新闻
  • 网管应当如何管理Windows操作系统?
  • Linux系统内核网络参数的意义及应用
  • 怎样把Linux服务器当作Mac的服务器
  • 独辟蹊径 实现Linux下局域网远程接入
  • 使用Linux系统的Shell脚本维护Oracle
【评论】【收藏本文】【打印】【关闭】
上一篇文章:使用Linux系统的Shell脚本维护Oracle
下一篇文章:独辟蹊径 实现Linux下局域网远程接入
讨论区
查看
已有 0 位对此新闻感兴趣的网友发表了看法
匿名发表
注册通行证 登陆
图文阅读推荐
Linux操作系统文件系统的桌面应用
Linux操作系统文件系统的桌面应用
Linux设备驱动编程之定时器
Linux设备驱动编程之定时器
Windows外衣Linux心 红旗桌面版详测
Windows外衣Linux心 红旗桌面版详测
超实用 Linux下通过VNC安装Oracle
超实用 Linux下通过VNC安装Oracle
全站资源
  • 微软官方入门教程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必知的事情 装机之必备软件大行动
病毒专杀栏
  • 杀毒软件反被病毒杀 连"救命"都不能喊
  • 金山ARP防火墙
  • 还原卡神话破灭“机器狗”病毒来势汹汹
  • cctv经济半小时:你的手机现在安全吗?
  • 新挂马方式开始流行 ARP挂马称雄局域网
  • 木马和病毒清除的通用解法
  • IP地址不再冲突 查找ARP攻击者元凶
  • 教你几招识别和防御Web网页木马
  • 分析:封杀BT只是暂时的止痛药
  • QQ爆危险漏洞,“QQ游戏邀请大盗”邀请你玩病
关于我们 | 诚聘英才 | 联系我们 | 版权声明 | 网站大事 | 网站地图 | 意见建议
CopyRight 2005-2007 Jztop.Com 版权所有 未经许可 请勿转载