易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux 2.6 字符设备驱动程序


、说明
笔记适用于
Linux

2.6.10
以后的内核。
笔记以
Linux
Device
Driver3
提供的
scull
程序
(scull
目录中的
main.c

scull.h)
为记录主线,并以该驱动程序中的各种系统调用和函数调用流程为记
录顺序。比如,
module_init( )

module_exit(
)
为相对应的一对系统调用,一般书籍中都会放在一起讨论,但是本笔记却不会这样,而是在需要调用的时候才会涉及,因此
module_init(
)
会放在笔记开始时,也就是刚加载
module
时讨论,而
module_exit( )
则会放在笔记结束前,也就是要卸载
module
时再加以讨论。
该笔记的的目的是为了对
Linux Device Drvier3
中提到的各个知识点作一下整理,理清一下头绪,从而能让我对
Linux
驱动程序加深整体或者全局上的理解。
注:个人理解,有误难免!
*******************************************
驱动程序
module
的工作流程主要分为四个部分:
1



Linux
提供的命令加载驱动
module
2


驱动
module
的初始化(初始化结束后即进入

潜伏

状态,直到有系统调用)
3


当操作设备时,即有系统调用时,调用驱动
module
提供的各个服务函数
4


卸载驱动
module
一、

驱动程序的加载
Linux
驱动程序分为两种形式:一种是直接编译进内核,另一种是编译成
module
形式,然后在需要该驱动
module
时手动加载。对于前者,还有待学习。
Module
形式的驱动,
Linux
提供了两个命令用来加载:
modprobe

insmod



modprobe
可以解决驱动
module
的依赖性,即假如正加载的驱动
module
若引用了其他
module
提供的内核符号或者其他资源,则
modprobe
就会自动加载那些
module
,不过,使用
modprobe
时,必须把要加载的驱动
module
放在当前模块搜索路径中。而
insmod
命令不会考虑驱动
module
的依赖性,但是它却可以加载任意目录下的驱动
module

一般来说,在驱动开发阶段,使用
/sbin/insmod
比较方便,因为不用将
module
放入当前
module
搜索路径中。
一旦使用
insmod
加载模块,则
Linux
内核就会调用
module_init(scull_init_module)
特殊宏,其中
scull_init_module
是驱动初始化函数,可自定义名称。
在用
insmod
加载
module
时,还可以给
module
提供模块参数,但是这需要在驱动源代码中加入几条语句,让模块


相关文档:

fedora下linux的安装

虽然mplayer的安装方法已经不是什么技术活,但最近有不少同学在询问我关于mplayer的安装方法的问题。我一贯推荐它们源代码包的安装,虽然步骤有些复杂,但解码器和二进制程序都尽在掌握,心里踏实。
===
1
下载如下这些软件:
all-20071007.tar.bz2
windows-all-20071007.zip
Blue-1.7.tar.bz2
MPlayer-1.0rc2.ta ......

Linux从源码安装subversion遇到问题及解决

Linux源码安装Subversion
先从subversion的官方网站下载源码,subversion.apache.org
解压开到subversion-xxx 然后configure
然后一般就是找不到某某库的错误,以下说明
1.找不到sqlite3
  从sqlite网站上下载sqlite3的源码,然后把sqlite3.c拷贝到 subversion-xxx/sqlite-amalgamation/sqlite3.c
2.找不到apr
......

Linux设备模型之input子系统详解(二)

;           break; 
         } 
  
         if (type != EV_SYN) 
            &nbs ......

linux 信号处理

曾做过signal相关的一点儿开发,谈谈我的一些理解。
首先,需要理解几个signal相关的函数。
  sigaddset(sigset_t* sigSet, int sigNum ) :  将信号sigNum 添加到信号集 sigSet 中;
  sigdelset(sigset_t* sigSet, int sigNum) : 将信号 sigNum 从信号集 sigSet 中删除;
   ......

Linux use notes

-----------------------------
Based on Fedora 8 version:
-----------------------------
1. No common command like ifconfig in os?
Root cause is the standard search path not include /sbin and /usr/sbin. Try to include them in /etc/profile. As belows:
 #Kenny add /sbin and /usr/sbin here.
&n ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号