摘要: 1 Makefile编写ifneq ($(KERNELRELEASE),)obj-m := mytest.omytest-objs := file1.o file2.o file3.oelseKDIR := /lib/modules/$(shell uname -r)/buildPWD := $(shell pwd)default: $(MAKE) -C $(KDIR) M=$(PWD) modules//到linux源码所在的目录执行主Makefile 并当前路径传给主Makefile,告诉主Makefile执行完后返回到当前目录,执行Makefileendif解释为:KERNELRELE. 阅读全文
posted @ 2013-04-05 19:10 在于思考 阅读(1516) 评论(0) 推荐(0) 编辑
摘要: 1 静态变量1.1 全局静态变量 在全局变量之前加上关键字static,全局变量就被定义成为一个全局静态变量。 (1)内存中的位置:静态存储区(静态存储区在整个程序运行期间都存在) (2)初始化:未经初始化的全局静态变量会被程序自动初始化为0(自动对象的值是任意的,除非他被显示初始化) (3)作用域:全局静态变量在声明他的文件之外是不可见的。准确地讲从定义之处开始到文件结尾。 好处: 定义全局静态变量的好处: <1>不会被其他文件所访问,修改 <2>其他文件中可以使用相同名字的变量,不会发生冲突。1.2 局部静态变量 在局部变量之前加上关键字static,局部变量就被定 阅读全文
posted @ 2013-04-05 11:17 在于思考 阅读(659) 评论(1) 推荐(0) 编辑
摘要: EXPORT_SYMBOL只出现在2.6内核中,在2.4内核默认的非static 函数和变量都会自动导入到kernel 空间的, 都不用EXPORT_SYMBOL() 做标记的。2.6就必须用EXPORT_SYMBOL() 来导出来(因为2.6默认不到处所有的符号)。1、EXPORT_SYMBOL的作用是什么?EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用,即使用EXPORT_SYMBOL可以将一个函数以符号的方式导出给其他模块使用。这里要和System.map做一下对比:System.map 中的是连接时的函数地址。连接完 阅读全文
posted @ 2013-04-05 09:43 在于思考 阅读(1771) 评论(0) 推荐(0) 编辑