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
相关文档:
当我们在Vmware或者其他虚拟机中安装Linux后,想在X
Windows与虚拟终端之间切换时,却发现Ctrl+Alt+Fx不起作用,那么我们如何解决这个问题呢?其实方法很简单,我们只需要将Vmware或
者其他虚拟机软件的热键改成Ctrl+Alt+Shift即可,如Vmware具体方法如下:中文版——选择编辑—&mdash ......
前言:本文环境基于RHEL 5。
在有限的带宽条件下,我们自言往往要对占用带宽过大的程度限速,例如,只允许其占用最高1Mbps的带宽,或者使其下载速度不超过200Kbps,等等。因此,我们就需要流量控制(Traffic Control)工具。
我在网上找了一下,了解了几个:trickle,pyshaper,以及LINUX内核自带的tc。
(1)tr ......
管理员想要提高Linux管理效率是要遵循一些管理技巧的,这里简单介绍有关Linux管理效率的三个技巧:卸载无响应的 DVD 驱动器、恢复出现问题的屏幕、屏幕协作。相信他们会对管理员效率有提高。
技巧 1:卸载无响应的 DVD 驱动器
网络新手的经历:按下服务器(运行基于 Redmond 的操作系统)DVD 驱动器上的 Eject 按钮时, ......
这两天在给自己的linux系统添加触摸屏,熟练以后再想办法移植。因为以前从来没有接触过这方面只是,只是在银行,超市,移动用过而已,几乎对开发没有任何帮助。于是我在windows中安装使用,确定没有问题。
1.从官方网站下站windowsXP驱动,WWW.touchkit.com。
2.下载后完文件夹里有个setup,安装软件。
3.在不断按&ldquo ......
一.前言
Linux拥有丰富各种源代码资源,但是大部分代码在Windows平台情况是无法正常编译的。Windows平台根本无法直接利用这些源代码资源。如果想要使用完整的代码,就要做移植工作。因为C/C++ Library的不同和其他的一些原因,移植C/C++代码是一项困难的工作。本文将以一个实际的例子(Tar)来说明如何把Linux代码移植 ......