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

Linux 驱动开发庖丁解牛之二 —— 模块编程


本文是建立在前面的开发环境已经成功建立的基础之上的。如果没有建立好,请参照《 Linux 驱动开发庖丁解牛之一 —— 开发环境的建立》。
已经有很多文档讲述模块编程,个人觉得《 The Linux kernel module programming guide 》是最详尽的。本文不再立足于从理论上去阐述模块编程的相关知识,而着重从实践的基础上去掌握模块编程,领悟模块编程的实质。当然,具备足够的理论知识才能从实践出发,所以,本文档尽量配合《 Linux Device Driver 》第三版的第二章,以及讲述模块编程最完善的文档《 The Linux kernel module programming guide 》。下面,我们从实践开始出发吧。
1. 人之初( hello world )
/*
* hello.c - The first kernel module programming
*/
#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_ALERT */
#include <linux/init.h>
MODULE_LICENCE( “ Dual BSD/GPL ” );
static int hello_init(void)
{
printk(KERN_INFO "Hello world\n");
/*
* A non 0 return means init_module failed; module can't be loaded.
*/
return 0;
}
static void hello_exit(void)
{
printk(KERN_INFO "Goodbye world\n");
}
module_init(hello_init);
 
module_exit(hello_exit);
MODULE_AUTHOR(“dreamice, jyjiang2005@gmail.com ”);
MODULE_DESCRIPTION(“The first module program”);
MODULE_VERSION(“V1.0”);
MODULE_ALIAS(“Chinese: ren zhi chu”);
Makefile:
obj-m := hello.o
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
$(RM) *.o *.ko *.mod.c Module.symvers
现在,我们一步一步来解析这个最简单的hello world 模块程序。
1. /linux/module.h 这个是必须的。这个头文件包含了对模块结构的定义以及相关信息。
2. module_init 和 module_exit 这两个函数是必须的。 module_init 就好比应用程序的 main 函数,没有 main 函数,应用程序将不知道从哪里开始执行。
3.关于 printk ,在 ldd3 的第四章有详细的说明,这个可以说是内核调试的一个基本手段。
4. MODULE_LICENCE , MODULE_AUTHOR , MODULE_DESCR


相关文档:

Linux @ VMWare 下修改MAC地址的方法(亲自实践)

今天拷贝了虚拟机在另外一台电脑上使用,发现MAC地址冲突,于是去网上找修改方法。可按照所说的,我并没有很顺利修改成功。
下面我将过程写出来,里面有些地方需要注意一下。
下面是我从网上搜索到大部分的做法如下,红色部分是我注释的,需要注意的地方:
VMware虚拟机中修改Linux MAC地址的方法:
1、修改虚拟机的*.v ......

Linux设备驱动之I2C架构分析

一:前言
I2c是philips提出的外设总线.I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL.正因为这样,它方便了工程人员
的布线.另外,I2C是一种多主机控制总线.它和USB总线不同,USB是基于master-slave机制,任何设备的通信必须由主机发起才可以.而
I2C 是基于multi master机制.一同总线上可允许多个master.关于I2C协议的知 ......

oracle RAC 9.2.0.4 for linux x86升级到9.2.0.8

oracle RAC 9.2.0.4升级到9.2.0.8
   操作系统平台:Red Hat Enterprise Linux AS release 3
   准备工作:
            1. Check Tablespace Sizes and Set Parameter Values
            
   &nb ......

linux下system()详解 (转)

linux操作系统下system () 函数详解
  (执行shell 命令)
  相关函数
  fork,execve,waitpid,popen
  表头文件
  #include<stdlib.h>
  定义函数
  int system(const char * string);
  函数说明
  system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string ......

matlab for Linux 安装

作者:lch
 
matlab
for
  

Linux
安装
(
安装方法文档是从网上查资料+
实践得到的 )
一.
安装
1.
首先需要建立安装目录
[wzh@localhost ~]$ su
[root@localhost ~]$ mkdir /usr/matlab
 
2.
然后加载光盘映像
[root@localhost wzh]# mount -o loop -t iso9660
/mnt/hda7 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号