linux module Makefile
不知道在什幺时候,转载Linux 出现了 module 这种东西,的确,它是 Linux 的一大革新。有了 module 之后,写
device driver 不再是一项恶梦,修改 kernel 也不再是一件痛苦的事了。因为你不需要每次要测试 driver 就重新
compile kernel 一次。那简直是会累死人。Module 可以允许我们动态的改变 kernel,加载 device
driver,而且它也能缩短我们 driver development 的时间。在这篇文章里,我将要跟各位介绍一下 module
的原理,以及如何写一个 module。
module 翻译成中文就是模块,不过,事实上去翻译这个字一点都没意义。在讲模块之前,我先举一个例子。相信很多人都用过 RedHat。在
RedHat 里,我们可以执行 sndconfig,它可以帮我们 config 声卡。config
完之后如果捉得到你的声卡,那你的声卡马上就可以动了,而且还不用重新激活计算机。这是怎幺做的呢 ? 就是靠module。module
其实是一般的程序。但是它可以被动态载到 kernel 里成为 kernel的一部分。载到 kernel 里的 module 它具有跟
kernel 一样的权力。可以 access 任何 kernel 的 data structure。你听过 kdebug 吗 ? 它是用来
debug kernel 的。它就是先将它本身的一个 module 载到 kernel 里,而在 user space 的 gdb
就可以经由跟这个 module 沟通,得知 kernel 里的 data structure 的值,除此之外,还可以经由载到 kernel 的
module 去更改 kernel 里 data structure。
我们知道,在写 C 程序的时候,一个程序只能有一个 main。Kernel 本身其实也是一个程序,它本身也有个 main,叫
start_kernel()。当我们把一个 module 载到 kernel 里的时候,它会跟 kernel 整合在一起,成为 kernel
的一部分。请各位想想,那 module 可以有 main 吗 ? 答案很明显的,是 No。理由很简单。一个程序只能有一个 main。在使用
module 时,有一点要记住的是 module 是处于被动的角色。它是提供某些功能让别人去使用的。
Kernel 里有一个变量叫 module_list,每当 user 将一个 module 载到 kernel 里的时候,这个 module
就会被记录在 module_list 里面。当 kernel 要使用到这个 module 提供的 function 时,它就会去 search
这个 list,找到 module,然后再使用其提供的 function 或 variable。每一个 module 都可以 export
一些 function 或变量来让别人使用。除此之外,module 也可以使用已经载到 kernel 里的 module 提供的
function。这种情形叫做 module stack。比方说,mod
相关文档:
发布文件到linux的apache服务器:
1. 添加映射到httpd文件
(1)打开httpd.conf文件
vi /etc/httpd/conf/httpd.conf
(2)添加以下内容到httpd.conf文件
Alias /shop/ "/usr/local/tomcat-6.0.16/webapps/ShoppingSearch/images/"
<Directory "/usr/local/tomcat-6.0.16/webapps/ShoppingSea ......
vmlinux 编译出来的最原始的内核文件,未压缩。
zImage 是vmlinux经过gzip压缩后的文件。
bzImage bz表示“big zImage”,不是用bzip2压缩的。两者的不同之处在于,zImage解压缩内核到低端内存(第一个640K),bzImage解压缩内核到高端内存(1M以上)。如果内核比较小,那么采用zImage或bzI ......
这两天在给自己的linux系统添加触摸屏,熟练以后再想办法移植。因为以前从来没有接触过这方面只是,只是在银行,超市,移动用过而已,几乎对开发没有任何帮助。于是我在windows中安装使用,确定没有问题。
1.从官方网站下站windowsXP驱动,WWW.touchkit.com。
2.下载后完文件夹里有个setup,安装软件。
3.在不断按&ldquo ......
1
、线程的创建、终止及控制:
任何进程在启动时就已有了一个主线程,如果需要再生成线程则使用
pthread_create
函数,在该函数中可以指定线程的属性、线程例程、传给线程例程的参数。线程例程是一个用户自定义的函数,及线程执行的代码。当线程例程返回时,线程则结束运行, ......