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

Linux设备驱动开发详解 笔记4 Linux内核模块

modprobe命令比insmod命令强大,它在加载某模块时会同时加载该模块所依赖的其他模块。使用modprobe命令加载的模块若以“modprobe –r filename”的方式卸载将同时卸载其依赖的模块。
printk打印到var/log/messages
2.6内核中已加载的信息也存在于/sys/module目录下,加载hello.ko后,内核中将包含/sys/module/hello目录,该目录又包含一个refcnt文件和一个sections目录
/proc/kallsyms文件对应着内核符号表,它记录了符号以及符号所在的内存地址
#include<linux/init.h>
#include<linux/module.h>
 
MODULE_LICENSE("Dual BSD/GPL");
 
int add_integar(int a, int b)
{
    return a+b;
}
 
int sub_integar(int a, int b)
{
    return a-b;
}
 
EXPORT_SYMBOL(add_integar);
EXPORT_SYMBOL(sub_integar);
 
编译后将模块插入,可以从/pro/kallsyms文件中找出add_integar、sub_integar相关信息
cat /pro/kallsyms |grep integar
 
try_module_get()与module_put()的引入与使用与Linux2.6内核下的设备模型密切相关。2.6内核为不同类型的设备定义了struct module *owner域,用来指向管理此设备的模块。当开始使用某个设备时,内核使用try_module_get(dev->owner)去增加管理此设备的owner模块的使用计数;当不再使用此设备时,内核使用module_put(dev->owner)减少对管理此设备的owner模块使用计数。这样,当设备在使用时,管理此设备的模块将不能被卸载。只有设备不再被使用时,模块才允许被卸载
开发人员所写的驱动通常是支持某种具体设备的owner模块,对此设备owner模块的计数管理有内核更底层的代码(如总线驱动或是此类设备公用的核心模块)来实现,从而简化了设备驱动的开发
 
编译步骤:先进入Linux内核所在的目录,并编译出.o文件,运行MODPOST回生成临时的.mod.c文件,而后根据此文件编译出.mod.o,之后连接.o和.mod.o得到模块目标文件.ko,最后离开Linux内核所在目录
 
如果模块包含多个.c文件(如file1.c、file2.c),Makefile如下:
obj-m := modulename.o
module-objs := file1.o file2.o


相关文档:

深度挖掘Linux操作系统命令“man”

man是manual(手册)的缩写
man可以在不同的版本中使用,主要分为两类。Red Hat和许多其他基于RPM的版本使用传统的man程序,而基于Debian的版本使用一个名为man-db的软件包。
man(1)
在文本窗口中浏览文件的方式在普遍使用HTML和PDF的时代中似乎有些过时了,但在终端窗口中阅读文件仍有其优势。对于那些Linux开发者来 ......

Linux软件安装常用方法

1、软件安装
卸载,分几种情况:
A:
RPM包,这种软件包就像windows的EXE安装
文件一样,各种文件已经编译好,并打了包,哪个文件该放到哪个文件夹,都指定好了,安装
非常方便,在图形界面里你只需要双击就能自动安装

==如何卸载:
1、打开一个SHELL终端
2、因为Linux
下的软件名都包括版本号,所以卸载前最好 ......

Linux 获取系统时间

1.时间表示
在程序当中,我们经常要输出系统当前的时间,比如我们使用date命令的输出结果。这个时候我们可以使用下面两个函数
time_t time(time_t *tloc);                    //时间精度为秒
char *ctime(const time_ ......

Linux设备驱动开发详解 笔记3 Linux内核及内核编程


在设备驱动方面,Linux2.6相对于Linux2.4有较大的改动,这主要表现在内核API中增加了不少新功能(如内存池)、sysfs文件系统、内核模块从.o变为.ko、驱动模块编译方式、模块使用计数、模块加载和卸载函数的定义等方面
Linux内核主要有进程调度、内存管理、虚拟文件系统、网络接口和进程间通信等5个子系统组成,如下图: ......

Linux学习初记


我的第一个shell程序:tt1.sh
while true
do
       date;
       sleep 1;
done
执行方式1:sh tt1.sh
执行方式2:./tt1.sh(要求该文件有可执行权限)
Shell变量:
环境变量:
       工具:echo 回显
 &n ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号