在我们进入更高级主题之前, 我们需要停下来快速关注一下可移植性问题. 现代版本的 Linux 内核是 高度可移植的, 它正运行在很多不同体系上. 由于 Linux 内核的多平台特性, 打算做认真使用的驱动 应当也是可移植的.

但是内核代码的一个核心问题是不但能够存取已知长度的数据项(例如, 文件系统数据结构或者设备单 板上的寄存器), 而且可以使用不同处理器的能力(32-位 和 64-位 体系, 并且也可能是 16 位).

内核开发者在移植 x86 代码到新体系时遇到的几个问题与不正确的数据类型相关. 坚持严格的数据类 型和使用 -Wall -Wstrict-prototypes 进行编译可能避免大部分的 bug.

内核数据使用的数据类型分为 3 个主要类型: 标准 C 类型例如 int, 明确大小的类型例如 u32, 以及 用作特定内核对象的类型, 例如 pid_t. 我们将看到这 3 个类型种类应当什么时候以及应当如何使用. 本章的最后的节谈论一些其他的典型问题, 你在移植 x86 的驱动到其他平台时可能遇到的问题, 并且 介绍近期内核头文件输出的链表的常用支持.

如果你遵照我们提供的指引, 你的驱动应当编译和运行在你无法测试的平台上.

最新文章

  1. 《深入理解Java虚拟机》内存分配策略
  2. laravel实现数据库多库配置,读写分离配置或者多读写分离配置
  3. October 25th Week 44th Tuesday 2016
  4. C#后台调用公网接口(GET, POST)
  5. 山东省滕州市木石镇化石沟村QQ群116528924
  6. 用Canvas玩3D:点-线-面
  7. php解密java的DES加密
  8. Cocos2d-x v3.0 新的事件调度方法 lambda表达式的使用
  9. mac os 下如何清除/切换svn eclipse插件的用户
  10. ThinkPHP学习手记——环境搭建
  11. Java 集合 fail-fast机制 [ 转载 ]
  12. HTML 学习笔记 JQuery(表单,表格 操作)
  13. Apache Spark RDD(Resilient Distributed Datasets)论文
  14. AI-2.梯度下降算法
  15. axios页面无刷新提交from表单
  16. Python模块之time、random、os、sys、序列化、re
  17. 线程误区-join,wait(里边还是调用的wait)
  18. 【第四课】Linux的基础命令使用
  19. zabbix添加Tomcat监控
  20. MinGW安装教程——著名C/C++编译器GCC的Windows版本

热门文章

  1. PHPCMS快速建站系列之pc:get标签的应用
  2. [React Native]获取网络状态
  3. Python学习之路13☞常用模块
  4. Gulp和webpack的作用和区别
  5. jQuery,javascript获得网页的高度和宽度$(document).height / $(window).height
  6. oralce基本select语句
  7. TIJ——Chapter Thirteen:Strings
  8. Redis源码解析:07压缩列表
  9. LeetCode69 Sqrt(x)
  10. uda 2.C++ 向量