设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 操作系统 >> Linux >> 详解Linux操作系统设备驱动兼容性
精品推荐
Linux点击TOP10
·Linux下安装LumaQQ
·口袋里的Linux:在您的U盘上运行SLAX
·Linux命令Man解释:PPPD(8) :点对点daemon协议
·虚拟网络计算工具VNC使用指南
·Linux系统中如何正确安装摄像头驱动
·Linux 内核文件系统与设备操作流程分析
·Linux 核心--4.内存管理
·Ethernet HOWTO Linux以太网-HOWTO (4)型号的信息
·Linux精彩桌面 GNOME桌面主题安装实例
·Linux下Flash/Shockwave播放器安装
操作系统点击TOP10
·Windows Vista完全硬盘安装法
·Windows Vista 激活不求人
·Windows Vista局域网网络连接设置
·Windows Vista系统动态桌面截图欣赏
·Windows XP中磁盘的分区应用
·Windows NT/2000/XP 出现蓝屏并显示“STOP 0x0000007f”错误
·让Windows XP变身Vista
·一招搞定Vista系统软件不兼容问题
·教你如何正确配置和优化Windows Vista
·只转两圈 加快Windows XP启动速度
精选专题

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

作者: 来源:http://www.xgdown.com/ 时间:2006-12-27 11:14:53

详解Linux操作系统设备驱动兼容性(7) 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的对应者。

  虚拟内存

共9页 9 7 [1] [2] [3] [4] [5] [6] [7] [8] [98 :>

详解Linux操作系统设备驱动兼容性 相关文章:
详解Linux操作系统设备驱动兼容性 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com