Linux 内核模块编程

Linux 内核模块编程

简单内核模块的编写

#include  <linux/kernel.h>     // 在内核模块中共享                                                                                    
#include  <linux/module.h>    // 一个模块                                                                                                     

int init_module()          //初始化模块                                                                                                                            
{                                                                                                                                                                            
   printk(“Hello! This is a testing module! \n”);                                                                               
   return 0;                                                                                           
}         

void cleanup_module()                                                                                                                          
{                                                                                                           
   printk(“Sorry! The testing module is unloading now! \n”);                                                                                 
}       

Makefile文件编写

obj-m += testmodule.o

KDIR =/usr/src/kernels/$(shell uname -r)/

all:
    $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

clean:
    rm -rf *.o *.ko *.mod.* *.symvers *.order

内核模块编写

$ sudo insmod hello.ko
$ dmesg                   ==> u will get the output

"装载内核模块"

$ sudo rmmod hello
$ dmesg

"卸载内核模块"

模块描述信息

使用modinfo查看一个模块的模块信息

[luo@localhost testmodule]$ modinfo testmodule.ko
filename:       /home/luo/os_exec2/testmodule/testmodule.ko
rhelversion:    7.3
srcversion:     9099367E555C4E8B9DE8D54
depends:        
vermagic:       3.10.0-514.10.2.el7.x86_64 SMP mod_unload modversions 

"查看内核模块信息"

文章目录
  1. 1. Linux 内核模块编程
    1. 1.1. 简单内核模块的编写
    2. 1.2. Makefile文件编写
    3. 1.3. 内核模块编写
    4. 1.4. 模块描述信息
|