kernel第一个模块

2018-07-24  本文已影响0人  only_cherry

一、 编写第一个模块例子

$>vim mod_test01.c

#include <linux/module.h>
//模块的入口函数,在insmod时调用
static int __init my_init(void)
{
printk("hello kernel\n");//显示信息

return 0;//成功返回0,失败返回负数
}
//模块出口函数,在rmmod时调用
static void __exit my_exit(void)
{
  printk("Bye,kernel\n");
}
module_init(my_init);
module_exit(my_exit);
MODULE_AUTHOR("LFJ");
MODULE_LICENSE("GPL");

$>vim Makefile

KERNEL := /usr/src/linux-headers-`uname -r`/
obj-m := mod_test01.o
myko := mod_test01.ko
all:
  make -C $(KERNEL) M=`pwd` modules

clean:
  make -C $(KERNEL) M=`pwd` clean

1、在pc上进行安装并测试;

2、注意:linux内核源码的路径中,可以包含中文,但是一定不能有空格

3、编译模块

$>make

二、模块的相关命令:

1.模块加载

sudo insmod mod_test01.ko

安装模块后,默认调用模块入口函数

2.查看内核信息

显示printk的信息

dmesg

清除printk的缓存区

sudo dmesg -c

3.卸载模块
sudo rmmod mod_test01
4.显示模块信息
modinfo mod_test01.ko
5.列出内核中已经加载的模块
lsmod

上一篇 下一篇

猜你喜欢

热点阅读