社区
Linux_Kernel
帖子详情
Linux 2.6 和2.4 驱动开发有什么不同,特别是驱动模块
zdhzidy
2004-11-16 03:57:42
如题
请问那里有相应的资料。麻烦大家介绍一下。
...全文
100
5
打赏
收藏
Linux 2.6 和2.4 驱动开发有什么不同,特别是驱动模块
如题 请问那里有相应的资料。麻烦大家介绍一下。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
binjuny
2004-11-17
打赏
举报
回复
现在让我们来看一个例子,分析一下新的内核编译系统如何来编译并加载一个简单的模块。这个模块是一个“hello world”模块,代码和2.4模块代码基本类似,只是 module_init 和 module_exit 要换成 init_module 和 cleanup_module (内核2.4.10模块已经使用这种机制)。这个模块命名为 hello.c,Makefile 文件如下:
清单 3. 驱动程序 makefile 文件示例
KERNEL_SRC = /usr/src/linux
SUBDIR = $(KERNEL_SRC)/drivers/char/hello/
all: modules
obj-m := module.o
hello-objs := hello.o
EXTRA_FLAGS += -DDEBUG=1
modules:
$(MAKE) -C $(KERNEL_SRC) SUBDIR=$(SUBDIR) modules
makefile 文件使用内核编译机制来编译模块。编译好的模块将被命名为 module.ko,并通过编译 hello.c 和连接 vermagic 而获得。KERNEL_SRC 指定内核源文件所在的目录,SUBDIR 指定放置模块的目录。EXTRA_FLAGS 指定了需要给出的编译期标记。
一旦新模块(module.ko)被创建,它可以被新的模块工具加载或缷载。2.4中的原有模块工具不能用来加载或缷载2.6的内核模块。这个新的模块加载工具会尽量减少在一个设备仍在使用的情况下相应的模块却被缷载的冲突发生,而是在确认这些模块已经没有任何设备在使用后再缷载它。产生这种冲突的原因之一是模块使用计数是由模块代码自己来控制的(通过MOD_DEC/INC_USE_COUNT)。
在2.6中,模块不再需要对引用计数进行加或减,这些工作将在模块代码外部进行。任何要引用模块的代码都必须调用 try_module_get(&module),只有在调用成功以后才能访问那个模块;如果被调用的模块已经被缷载,那么这次调用会失败。相应的,可以通过使用 module_put() 来释放对模块的引用。
CoolQ
2004-11-17
打赏
举报
回复
visit www.lwn.net.
there are a series of articles about porting 2.4 driver to 2.6
ChChip
2004-11-16
打赏
举报
回复
顶顶顶顶顶顶顶顶顶顶顶顶顶顶
zdhzidy
2004-11-16
打赏
举报
回复
还是自己顶阿 阿阿阿
zdhzidy
2004-11-16
打赏
举报
回复
自己顶!!
从
2.4
到
2.6
:
Linux
内核可装载模块机制的改变对设备
驱动
的影响
从
2.4
到
2.6
:
Linux
内核可装载模块机制的改变对设备
驱动
的影响
Linux
-
2.6
内核移植
根据
Linux
2.6
新的特性,
2.4
下各
驱动
模块
也陆续被移植或重新编写。随着内核以及
驱动
开发
工作的进一步深入开展,深深地体会到规范文档的重要意义,因此内核
开发
小组组织编写了本文档,旨在总结过去工作中的经验和收获...
The_
Linux
_Kernel_Module_Programming_Guide_
2.6
中文版
《
Linux
内核
驱动
模块
编程指南》最初是由Ori Pomerantz为2.2版本的内核编写的 ,后来,Ori将文档维护的任务交给了Peter Jay Salzman,Peter完成了
2.4
内核版本文档 的编写,毕竟
Linux
内核
驱动
模块
是一个更新很快的...
linux
设备
驱动
程序中英文加源码
linux
设备
驱动
程序中英文版加源码 目录 1. 第一章 设备
驱动
简介 1.1.
驱动
程序的角色 1.2. 划分内核 1.2.1. 可加载模块 1.3. 设备和模块的分类 1.4. 安全问题 1.5. 版本编号 1.6. 版权条款 1.7. 加入内核
开发
社团 ...
linux
设备
驱动
程序(第三版)CHM和配套源码
2.4
. 编译和加载
2.4
.1. 编译模块
2.4
.2. 加载和卸载模块
2.4
.3. 版本依赖
2.4
.4. 平台依赖性 2.5. 内核符号表
2.6
. 预备知识 2.7. 初始化和关停 2.7.1. 清理函数 2.7.2. 初始化中的错误处理 2.7.3. 模块...
Linux_Kernel
4,441
社区成员
17,460
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章